Makopy'5 La6

スマホアプリ開発とかその周辺のこととか関係ないこと。または恋は言ってみりゃボディー・ブロー

(Xamarin.Forms)WebViewについて -その2- Webブラウザで開く

以前、WebViewに関してごちゃごちゃと書きました。

以前の記事はコチラ↓
(Xamarin.Forms)WebViewについて - Makopy'5 La6

今後、WebView周りの実装について何度かに分けて覚書しておく予定です。
今回は直接WebViewのトピックではありませんが、Webブラウザでページを開く制御について書きます。

Webブラウザで開く

Device.OpenUriを用います。

サンプルプロジェクトはこちら

github.com

WebやWebView周りの諸々については、このプロジェクトに組み込んでいく予定です。

スマホアプリにおけるWebページ表示

ケースバイケースですが。
スマホアプリにおけるWebページ表示については、概ね下記のような要望のパターンがあります。

  • WebViewを用いて内部で開く
  • Webブラウザで開く
  • 内部コンテンツはWebViewで、WebページはWebブラウザで開く
  • 内部コンテンツと一部WebページをWebViewで、それ以外はブラウザで開く

オンライン/オフラインに関わらずユーザに一読してもらいたい文書や、原則的に変更がないコンテンツなどを内部コンテンツとして持っておくことがあります。
そのようなコンテンツをHTML/CSSで作成してWebViewで表示するということがよくあります。

逆に、閲覧を強制する必要のないコンテンツや既存のWebページをそのまま利用したい場合は、Web上のページにアクセスすることが多いです。
この場合、WebViewを用いるかWebブラウザで開くかはケースバイケースです。 既存のWebページをWebViewで開く場合、アプリとは関係のない先へのリンクなどが存在することもあり、

  • WebView上の戻り遷移をサポートする
  • WebView上のリンクを制限する

といったような、何かしらの制御が必要になります。

アプリ上の画面遷移の整合性なども考えると、一難去ってまた一難的に、あれこれと考えなければならないことが多いです。
特殊な事情やアプリ内部に閉じ込める必要がない場合には、Webブラウザで開く方向に調整をした方が楽だと思います。

一番危険なのは、
「WebViewにURL設定するだけ」
という前提から入ってしまうことです。

ブラウザアプリやハイブリッドアプリを除けば、WebViewがメインに来ることはあまりないと思います。
それゆえにWebView周辺のことに関しては見積もりが甘くなることもしばしばです。
WebViewやその制御自体の問題ではありませんが、こういったこともWebViewの怖いところです…。