h5はカスタムプロトコルリクエストを開始します。アプリがこのリクエストをインターセプトした後、アプリはh5のコールバック関数を呼び出します。

 プロトコルインターセプトカスタムプロトコルリクエストはh5によって開始されます。アプリがリクエストをインターセプトした後、アプリはh5でコールバック関数を呼び出します。

  1. プロトコルは、sdk:// action?paramsなどのアプリによってカスタマイズされます

  2. 次のようなh5でコールバック関数を定義します。

    window.bridge = {getDouble:value => {}、getTriple:value => {}}

  3. カスタムプロトコルリクエストは、location.href = 'sdk:// double?value = 10'などのh5によって開始されます。

  4. アプリはリクエストをインターセプトした後、対応する操作を実行して戻り値を取得します

  5. 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; 
}

おすすめ

転載: blog.csdn.net/weixin_43837268/article/details/109167268