.NET 開発基盤部会 Wiki
目次 †
概要 †
スマホネイティブから、ウェブコンテンツを表示するときに使用するコンポーネント。
Android †
Android WebViewは
- Androidアプリでウェブコンテンツを表示するときに使用できる。
- Chromeの技術を使用したシステムコンポーネントである。
- コンポーネントは端末にプリインストールされている。
- 最新の状態に維持される(セキュリティアップデートやその他のバグ修正を反映)。
簡易ブラウザ開発 †
プロキシ †
その他 †
iOS †
Android WebViewには、
というWebViewがある模様。
iOSのバージョンアップに従って機能が変更されている模様。
簡易ブラウザ開発 †
プロキシ †
その他 †
ハイブリッド開発 †
HTMLコンテンツから、JavaScriptを経由して、スマホネイティブのデバイスへアクセスする。
参考 †
- 書籍転載:[iOS/Android対応]HTML5ハイブリッドアプリ開発[実践]入門
addJavascriptInterface?方式 †
- 処理方式
- JavascriptにJavaのInterfaceを公開する。
- 脆弱性がある。
- HTTP/HTTPSのアクセスだけ許容する。
- shouldOverrideUrlLoading?でURLチェックを行なう。
- Android 4.2 Jelly Bean以降、公開するAPIを
@JavascriptInterface?アノテーションで指定可能になった。
カスタムURLスキーム方式 †
onJsAlert?方式 †
- 処理方式
- Alertに渡された文字列をWebChromeClient?のonJsAlert?で補足するハックを使用。
- result.confirm()で全てのAlertが抑止されるので・・・。
ローカルHTTPサーバ方式 †
- 処理方式
- WebAPI連携(ローカルに、WebAPIの実行環境の構築が必要)
ネイティブ側からJavaScriptに値を渡すには、JavaScriptのグローバル変数に値を代入する。
JSONライブラリ †
JavaScriptのObjectは渡せないので、JSONライブラリを用いて文字列にParseする。
Android †
loadUrlメソッドにjavascriptスキームのURLを読み込ませる。
webView.loadUrl("javascript:window.objectFromNative=" + new JSONObject().toString());
iOS †
stringByEvaluatingJavaScriptFromString?メソッドを実行する。
[webView evaluateJavaScript: @"window.objectFromNative = 'foobarvalue';"];
デバッグ †
セキュリティ †
WebView#addJavascriptInterface?(Android) †
WebView#addJavascriptInterface?は危険。
- スマートフォンアプリへのブラウザ機能の実装に潜む危険 WebViewクラスの問題について:CodeZine?(コードジン)
- WebChromeClient?#onJsAlert?を使う方法