Makopy'5 La6

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

(Xamarin.Forms)WebViewについて

WebViewの用途

例えば、下記のような用途があります。

  • 内部HTMLコンテンツの表示
  • 外部ページの表示
  • Web APIレスポンスパース

WebViewは楽じゃない…

実戦のスマホアプリ開発において、WebViewの存在はまぁまぁ欠かせないものだと思います。
WebViewは単純に配置して使ってみるだけであれば、割と簡単なコンポーネントです。

しかしながら、実戦の開発においては、
単純にWebページやコンテンツを表示して終わり
というパターンは少なく、

  • 表示ページからのリンク先を制限する
  • 内部HTMLから外のページへリンクする場合は外部ブラウザで表示する
  • HTML上のボタンタップでネイティブの画面に遷移する

と言ったような要求や仕様と隣り合わせになることが多いです。
その実現のためには、

  • 各種イベントの捕捉(フック)
  • JavaScript連携

といった制御が必要になります。

WebViewで上記のような対応をする場合、
本来サーバサイドやWebページ側が対応すべきだったり、その方が楽な場合も多いのですが。
「アプリのWebViewの制御で可能な限り何とかする」
という、Web周りの面倒を吸収するような役割を期待されていることもあります。

Xamarin.FormsにおけるWebView

例によって、公式のDevelopers Guidesです。
WebView - Xamarin

Webページやコンテンツの表示だけであれば問題なさそうです。
しかしながら、イベントを捕捉したりJavaScriptと連携するような込み入った制御はできそうにありません。
込み入ったことをしたい場合は、Custom RendererでOSごとの実装が必要になります。
OSごとの実装をする一方、UI層との連携には統一のI/Fを準備する必要があります。

この辺りは別記事で、後日改めて記事にしたいと思います。

実は…。
現在進行形で実戦の開発でぼちぼち大変な思いをしています。
大変なのは業務上の経緯や都合も多分に含んではいますがw
業務的なお話は除いた技術的なトピックの部分で、自身が苦労したことを覚書としてしたためる予定です。