プロトコルインターセプトカスタムプロトコルリクエストはh5によって開始されます。アプリがリクエストをインターセプトした後、アプリはh5でコールバック関数を呼び出します。
-
プロトコルは、sdk:// action?paramsなどのアプリによってカスタマイズされます
-
次のようなh5でコールバック関数を定義します。
window.bridge = {getDouble:value => {}、getTriple:value => {}}
-
カスタムプロトコルリクエストは、location.href = 'sdk:// double?value = 10'などのh5によって開始されます。
-
アプリはリクエストをインターセプトした後、対応する操作を実行して戻り値を取得します
-
window.bridge.getDouble(20);などのアプリによってh5のコールバック関数を呼び出します。
javascript
window.bridge = { GetDoubleを:値=> {// 20 }、 getTriple:値=> { //より } }。 location.href = 'sdk:// double?value = 10';
アンドロイド:
webview.setWebViewClient(新新WebViewClient(){ @Override 公共ブールhouldOverrideUrlLoading(WebViewの閲覧、文字列のURL){ // URLが決定したSDKの場合://上から始まりノックダウン // URLおよびSDKから:// ?paramsおよびparamsで実行されたアクション Uri Uri.parse = URI(URL); IF(。uri.getScheme()equals( "SDK")){ // =このようなアクションを2倍にすると、params = value = 10Webview。 EvaluationJavascript( 'window.bridge.getDouble(20 is)'); trueに戻る; } } });
ios:
(BOOL)Webview :( UIWebView *)Webview shouldStartLoadWithRequest :( NSURLRequest *)Request NavigationType :( UIWebViewNavigationType)navigationType { // URLがsdkであるかどうかを判別します://インターセプトで開始します //次にurl sdk:// ?paramsおよびparamsで実行されたアクション NSString * urlStr = request.URL.absoluteString; IF([urlStr hasPrefix:@ "SDK://"]){ //このようなアクション= double、params = value = 10 * @ FUNC = NSString "window.bridge.getDouble(20 is)"; [Webview stringByEvaluatingJavaScriptFromString:FUNC]; return NO; } return YES; }