WebView
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>スマホネイティブ]]
--[[Android]]
--[[iOS]]
*目次 [#z8883726]
#contents
*概要 [#pa86c11c]
スマホネイティブから、ウェブコンテンツを表示するときに使...
*Android [#ve42686d]
Android WebViewは
-Androidアプリでウェブコンテンツを表示するときに使用でき...
-Chromeの技術を使用したシステムコンポーネントである。
--コンポーネントは端末にプリインストールされている。
--最新の状態に維持される(セキュリティアップデートやその...
**WebView [#kcb0f981]
-WebView | Android Developers~
https://developer.android.com/reference/android/webkit/We...
**簡易ブラウザ開発 [#ye237484]
-Androidでウェブブラウザを作ろう (全12回) - プログラミン...
http://dotinstall.com/lessons/browser_android_v2
-Androidアプリ開発でWebViewを追加する方法【初心者向け】 |...
https://techacademy.jp/magazine/3503
-Android StudioでwebViewを使ってみる! - Qiita~
http://qiita.com/sy_sft_/items/508870dfccfb237d72fd
-WebViewを使ったアプリ作成 - Okomeda Net
--[[その1>http://www.okomeda.net/?cmd=read&page=WebView%...
--[[その2>http://www.okomeda.net/?cmd=read&page=WebView%...
--[[その3>http://www.okomeda.net/?cmd=read&page=WebView%...
--[[その4>http://www.okomeda.net/?cmd=read&page=WebView%...
**プロキシ [#cb35e1a3]
-参考
--android WebView internet access problem, because of pro...
http://stackoverflow.com/questions/6673159/android-webvie...
-やってみたところ。
--最新のもので、WebView.enablePlatformNotifications()メソ...
--また、上記が、プロキシ認証に対応しているかどうかが不明。
--[[潔く、ローカル・プロキシを使用するようにした。>Androi...
**その他 [#s4ffdf73]
-Android エンジニアが Android の WebView で苦しんだ話 - Q...
http://qiita.com/akitaika_/items/654dafa26e1d1dd0d3dd
*iOS [#h7076133]
Android WebViewには、
-UIWebViewと
-WKWebView(UIWebViewの強化版)、
-SFSafariViewController
というWebViewがある模様。
iOSのバージョンアップに従って機能が変更されている模様。
**WebView [#e4d472b3]
-WKWebViewとUIWebView~
http://www.slideshare.net/yukihirai52/wkwebviewanduiwebview
-iOS 9のUIWebViewがとても残念らしいので~
WKWebViewに対応したCordova iOS 4.0(未リリース)を試して...
https://inoccu.com/blog/2015/09/19/230210.html
**簡易ブラウザ開発 [#td3eb83e]
**プロキシ [#x3db6293]
**その他 [#e174b1f5]
*デバッグ [#k49692d7]
**Android [#rd572ed3]
-[Android] WebView に読み込んだ JavaScript アプリケーショ...
Chrome Developer Tools でデバッグする~
http://qiita.com/hkusu/items/fca23e0fa5cfb1b7fe1f
**iOS [#i317b327]
*ハイブリッド開発 [#jc6f5cde]
HTMLコンテンツから、JavaScriptを経由して、スマホネイティ...
**参考 [#q1880415]
-[iOS/Android対応] HTML5 ハイブリッドアプリ開発[実践]入門...
[[https://www.amazon.co.jp/Android対応-HTML5-ハイブリッド...
--書籍転載:[iOS/Android対応]HTML5ハイブリッドアプリ開...
***HTML→(JavaScript)→スマホネイティブ [#h3aba979]
-PhoneGap/Cordova:addJavascriptInterface方式(前編) - ...
JavaScriptからネイティブの機能を呼び出す方法~
http://www.buildinsider.net/mobile/bookhtml5hybrid/1101
--JsAlert方式
--addJavascriptInterface方式
--Loopback Interface Redirection方式
--[[Private-Use URI Scheme Redirection>#u3cedd19]]方式
***スマホネイティブ→(JavaScript)→HTML [#l4ff135e]
-PhoneGap/Cordova:addJavascriptInterface方式(後編) - ...
ネイティブからJavaScriptへ値を渡す~
http://www.buildinsider.net/mobile/bookhtml5hybrid/1102
**HTML→(JavaScript)→スマホネイティブの処理方式 [#u603a44b]
***onJsAlert方式 [#k9447f5e]
-対応デバイス
--Androidのみ
-処理方式
--window.alert()に渡された文字列をWebChromeClientのonJsAl...
--result.confirm()で全てのwindow.alert()が抑止されるので...
***addJavascriptInterface方式 [#veea171f]
-対応デバイス
--Androidのみ
-処理方式
--JavascriptにJavaのInterfaceを公開する。
-脆弱性がある。
--HTTP/HTTPSのアクセスだけ許容する。
--shouldOverrideUrlLoadingでURLチェックを行なう。
--Android 4.2 Jelly Bean以降、公開するAPIを~
@JavascriptInterfaceアノテーションで指定可能になった。
***Loopback Interface Redirection方式 [#c0ab9dff]
-対応デバイス
--Android and iOSをサポート
-処理方式
--ローカル・ループバックでWebAPI連携~
(ローカルに、WebAPIの実行環境の構築が必要)
***[[Private-Use URI Scheme Redirection]]方式 [#u3cedd19]
-HTML:location.hrefで「apicall://」等、Private-Use URL Sc...
-Android:上記の呼び出しを、
--shouldOverrideUrlLoading()メソッドで補足する。
-iOS :上記の呼び出しを、
--shouldStartLoadWithRequest()メソッド(UIWebViewDelegate...
--NSURLProtocol.canInitWithRequest()メソッドで補足する。
**スマホネイティブ→(JavaScript)→HTMLの処理方式 [#lc1b0dee]
ネイティブ側からJavaScriptを実行し、JavaScriptのグローバ...
***JSONライブラリ [#s575eb8d]
Objectは渡せないので、JSONライブラリを用いて文字列にParse...
***Android [#kc3b6d15]
ネイティブ側からJavaScriptを実行する方法は、~
loadUrlメソッドにjavascriptスキームのURLを読み込ませる。
webView.loadUrl("javascript:window.objectFromNative=" + ...
[[Android 4.4 (KitKat) でjavascriptを実行する場合、webvie...
***iOS [#j4468722]
ネイティブ側からJavaScriptを実行する方法は、~
stringByEvaluatingJavaScriptFromStringメソッドを実行する。
-引数として渡したJavaScriptが実行される。
-その評価したJavaScriptのコードの返り値を取得できる。
[webView evaluateJavaScript: @"window.objectFromNative =...
*セキュリティ [#x430ac65]
**Android [#sac1f81c]
***WebView#addJavascriptInterface(Android) [#x0ab8106]
WebView#addJavascriptInterfaceは危険。
-スマートフォンアプリへのブラウザ機能の実装に潜む危険 Web...
--http://codezine.jp/article/detail/6618
--http://codezine.jp/article/detail/6618?p=2
---特定のURLのみに限定する
---http/httpsプロトコルのみに限定する
-AndroidのWebView#addJavascriptInterfaceがどれだけ危険か...
http://www.kanasansoft.com/weblab/2012/04/webview_addjava...
-AndroidのWebView#addJavascriptInterfaceは基本使わない方...
http://zentoo.hatenablog.com/entry/20120507/1336399651
--インタフェースは貧弱だが安全なAPIを用いるとイイ。
---WebChromeClient#onJsAlert
---WebChromeClient#onJsPrompt
-WebChromeClient#onJsAlertを使う方法
--Android の WebView で addJavascriptInterface を使わず情...
http://qiita.com/ka_/items/f8dcde7893f3a029f151
---AppとWebViewの相互の機能の呼び方、~
そしてhistory.back()について(iPhone・Android) | ひささ...
http://tech.hisasann.com/javascript/46/
---AndroidのWebViewでJavaScriptを実行する~
http://dayafterneet.blogspot.jp/2011/08/androidwebviewjav...
**iOS [#x5325f17]
*バージョン間の差異 [#vb2bdd63]
**Android [#l75a7c1e]
Android 4.4 (KitKat)での変更が大きかった模様。
***Migrating to WebView in Android 4.4 (KitKat) [#ifcd1679]
-Migrating to WebView in Android 4.4 | Android Developers~
https://developer.android.com/guide/webapps/migrating.html
-Migrating to WebView in Android 4.4 翻訳~
https://gist.github.com/seamountain/7415057
***JavaScriptの実行 [#m23843e5]
https://gist.github.com/seamountain/7415057#multi-threadi...
-Android 4.4 (KitKat) でjavascriptを実行する場合、~
webview.loadUrlからwebview.evaluateJavascriptへ変更する必...
-この理由は、「webview.loadUrlだと、JavaScript のCallback...
UIスレッドをブロックするしか無いため。」と書かれている。~
--Callbackを持つevaluateJavascriptに変更する。
--loadUrlメソッドではJavaScriptスキームを実行できなくなっ...
***Signature [#vb8d15a2]
-WebViewClient
--public void onReceivedError
---onReceivedError(WebView view, int errorCode, String de...
---onReceivedError(WebView view, WebResourceRequest reque...
--public boolean shouldOverrideUrlLoading
---shouldOverrideUrlLoading(WebView view, String url)
---shouldOverrideUrlLoading(WebView view, WebResourceRequ...
**iOS [#k22ff486]
???
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>スマホネイティブ]]
--[[Android]]
--[[iOS]]
*目次 [#z8883726]
#contents
*概要 [#pa86c11c]
スマホネイティブから、ウェブコンテンツを表示するときに使...
*Android [#ve42686d]
Android WebViewは
-Androidアプリでウェブコンテンツを表示するときに使用でき...
-Chromeの技術を使用したシステムコンポーネントである。
--コンポーネントは端末にプリインストールされている。
--最新の状態に維持される(セキュリティアップデートやその...
**WebView [#kcb0f981]
-WebView | Android Developers~
https://developer.android.com/reference/android/webkit/We...
**簡易ブラウザ開発 [#ye237484]
-Androidでウェブブラウザを作ろう (全12回) - プログラミン...
http://dotinstall.com/lessons/browser_android_v2
-Androidアプリ開発でWebViewを追加する方法【初心者向け】 |...
https://techacademy.jp/magazine/3503
-Android StudioでwebViewを使ってみる! - Qiita~
http://qiita.com/sy_sft_/items/508870dfccfb237d72fd
-WebViewを使ったアプリ作成 - Okomeda Net
--[[その1>http://www.okomeda.net/?cmd=read&page=WebView%...
--[[その2>http://www.okomeda.net/?cmd=read&page=WebView%...
--[[その3>http://www.okomeda.net/?cmd=read&page=WebView%...
--[[その4>http://www.okomeda.net/?cmd=read&page=WebView%...
**プロキシ [#cb35e1a3]
-参考
--android WebView internet access problem, because of pro...
http://stackoverflow.com/questions/6673159/android-webvie...
-やってみたところ。
--最新のもので、WebView.enablePlatformNotifications()メソ...
--また、上記が、プロキシ認証に対応しているかどうかが不明。
--[[潔く、ローカル・プロキシを使用するようにした。>Androi...
**その他 [#s4ffdf73]
-Android エンジニアが Android の WebView で苦しんだ話 - Q...
http://qiita.com/akitaika_/items/654dafa26e1d1dd0d3dd
*iOS [#h7076133]
Android WebViewには、
-UIWebViewと
-WKWebView(UIWebViewの強化版)、
-SFSafariViewController
というWebViewがある模様。
iOSのバージョンアップに従って機能が変更されている模様。
**WebView [#e4d472b3]
-WKWebViewとUIWebView~
http://www.slideshare.net/yukihirai52/wkwebviewanduiwebview
-iOS 9のUIWebViewがとても残念らしいので~
WKWebViewに対応したCordova iOS 4.0(未リリース)を試して...
https://inoccu.com/blog/2015/09/19/230210.html
**簡易ブラウザ開発 [#td3eb83e]
**プロキシ [#x3db6293]
**その他 [#e174b1f5]
*デバッグ [#k49692d7]
**Android [#rd572ed3]
-[Android] WebView に読み込んだ JavaScript アプリケーショ...
Chrome Developer Tools でデバッグする~
http://qiita.com/hkusu/items/fca23e0fa5cfb1b7fe1f
**iOS [#i317b327]
*ハイブリッド開発 [#jc6f5cde]
HTMLコンテンツから、JavaScriptを経由して、スマホネイティ...
**参考 [#q1880415]
-[iOS/Android対応] HTML5 ハイブリッドアプリ開発[実践]入門...
[[https://www.amazon.co.jp/Android対応-HTML5-ハイブリッド...
--書籍転載:[iOS/Android対応]HTML5ハイブリッドアプリ開...
***HTML→(JavaScript)→スマホネイティブ [#h3aba979]
-PhoneGap/Cordova:addJavascriptInterface方式(前編) - ...
JavaScriptからネイティブの機能を呼び出す方法~
http://www.buildinsider.net/mobile/bookhtml5hybrid/1101
--JsAlert方式
--addJavascriptInterface方式
--Loopback Interface Redirection方式
--[[Private-Use URI Scheme Redirection>#u3cedd19]]方式
***スマホネイティブ→(JavaScript)→HTML [#l4ff135e]
-PhoneGap/Cordova:addJavascriptInterface方式(後編) - ...
ネイティブからJavaScriptへ値を渡す~
http://www.buildinsider.net/mobile/bookhtml5hybrid/1102
**HTML→(JavaScript)→スマホネイティブの処理方式 [#u603a44b]
***onJsAlert方式 [#k9447f5e]
-対応デバイス
--Androidのみ
-処理方式
--window.alert()に渡された文字列をWebChromeClientのonJsAl...
--result.confirm()で全てのwindow.alert()が抑止されるので...
***addJavascriptInterface方式 [#veea171f]
-対応デバイス
--Androidのみ
-処理方式
--JavascriptにJavaのInterfaceを公開する。
-脆弱性がある。
--HTTP/HTTPSのアクセスだけ許容する。
--shouldOverrideUrlLoadingでURLチェックを行なう。
--Android 4.2 Jelly Bean以降、公開するAPIを~
@JavascriptInterfaceアノテーションで指定可能になった。
***Loopback Interface Redirection方式 [#c0ab9dff]
-対応デバイス
--Android and iOSをサポート
-処理方式
--ローカル・ループバックでWebAPI連携~
(ローカルに、WebAPIの実行環境の構築が必要)
***[[Private-Use URI Scheme Redirection]]方式 [#u3cedd19]
-HTML:location.hrefで「apicall://」等、Private-Use URL Sc...
-Android:上記の呼び出しを、
--shouldOverrideUrlLoading()メソッドで補足する。
-iOS :上記の呼び出しを、
--shouldStartLoadWithRequest()メソッド(UIWebViewDelegate...
--NSURLProtocol.canInitWithRequest()メソッドで補足する。
**スマホネイティブ→(JavaScript)→HTMLの処理方式 [#lc1b0dee]
ネイティブ側からJavaScriptを実行し、JavaScriptのグローバ...
***JSONライブラリ [#s575eb8d]
Objectは渡せないので、JSONライブラリを用いて文字列にParse...
***Android [#kc3b6d15]
ネイティブ側からJavaScriptを実行する方法は、~
loadUrlメソッドにjavascriptスキームのURLを読み込ませる。
webView.loadUrl("javascript:window.objectFromNative=" + ...
[[Android 4.4 (KitKat) でjavascriptを実行する場合、webvie...
***iOS [#j4468722]
ネイティブ側からJavaScriptを実行する方法は、~
stringByEvaluatingJavaScriptFromStringメソッドを実行する。
-引数として渡したJavaScriptが実行される。
-その評価したJavaScriptのコードの返り値を取得できる。
[webView evaluateJavaScript: @"window.objectFromNative =...
*セキュリティ [#x430ac65]
**Android [#sac1f81c]
***WebView#addJavascriptInterface(Android) [#x0ab8106]
WebView#addJavascriptInterfaceは危険。
-スマートフォンアプリへのブラウザ機能の実装に潜む危険 Web...
--http://codezine.jp/article/detail/6618
--http://codezine.jp/article/detail/6618?p=2
---特定のURLのみに限定する
---http/httpsプロトコルのみに限定する
-AndroidのWebView#addJavascriptInterfaceがどれだけ危険か...
http://www.kanasansoft.com/weblab/2012/04/webview_addjava...
-AndroidのWebView#addJavascriptInterfaceは基本使わない方...
http://zentoo.hatenablog.com/entry/20120507/1336399651
--インタフェースは貧弱だが安全なAPIを用いるとイイ。
---WebChromeClient#onJsAlert
---WebChromeClient#onJsPrompt
-WebChromeClient#onJsAlertを使う方法
--Android の WebView で addJavascriptInterface を使わず情...
http://qiita.com/ka_/items/f8dcde7893f3a029f151
---AppとWebViewの相互の機能の呼び方、~
そしてhistory.back()について(iPhone・Android) | ひささ...
http://tech.hisasann.com/javascript/46/
---AndroidのWebViewでJavaScriptを実行する~
http://dayafterneet.blogspot.jp/2011/08/androidwebviewjav...
**iOS [#x5325f17]
*バージョン間の差異 [#vb2bdd63]
**Android [#l75a7c1e]
Android 4.4 (KitKat)での変更が大きかった模様。
***Migrating to WebView in Android 4.4 (KitKat) [#ifcd1679]
-Migrating to WebView in Android 4.4 | Android Developers~
https://developer.android.com/guide/webapps/migrating.html
-Migrating to WebView in Android 4.4 翻訳~
https://gist.github.com/seamountain/7415057
***JavaScriptの実行 [#m23843e5]
https://gist.github.com/seamountain/7415057#multi-threadi...
-Android 4.4 (KitKat) でjavascriptを実行する場合、~
webview.loadUrlからwebview.evaluateJavascriptへ変更する必...
-この理由は、「webview.loadUrlだと、JavaScript のCallback...
UIスレッドをブロックするしか無いため。」と書かれている。~
--Callbackを持つevaluateJavascriptに変更する。
--loadUrlメソッドではJavaScriptスキームを実行できなくなっ...
***Signature [#vb8d15a2]
-WebViewClient
--public void onReceivedError
---onReceivedError(WebView view, int errorCode, String de...
---onReceivedError(WebView view, WebResourceRequest reque...
--public boolean shouldOverrideUrlLoading
---shouldOverrideUrlLoading(WebView view, String url)
---shouldOverrideUrlLoading(WebView view, WebResourceRequ...
**iOS [#k22ff486]
???
ページ名: