クライアントはWebViewClient
类的shouldOverrideUrlLoading
メソッドを使用して、フロントエンドとクライアント間の通信を処理します。この場合、フロントエンドはクライアントの処理コールバックをどのようにして知るのでしょうか?
状況は以下の通りです
フロントエンドは、現在のユーザーの取得など、特定のプロトコルのアドレスを送信しますjsbridge://bridge/userid
クライアントはこの負荷をキャプチャし、フロントエンドへの値の書き込みなどの操作の実行を開始しますjavaScript:window.userId=12121
このシナリオでは何をすべきですか?
私の理解では、JSBridge を理解するには、最終的に 3 つのことを理解する必要があります。1 つは H5 がどのように Native を呼び出すか、もう 1 つは Native が H5 を呼び出す方法、そして最後の 1 つは 2 つの間のコールバックです。
のメソッドを呼び出し、そのうちの 1 つを選択して H5 データをインターセプトし、それを渡します。処理のためにネイティブに移行します
WebChromeClient
或者是WebviewClient
このメソッドです
webview.loadUrl(javascript:yourFunc(data););
会把数据传给H5并执行H5中的yourFunc
を使用して、Map を介して呼び出し関数 Callback を編成することです。Map(UniqueID,Callback)
,并把此唯一标示UniqueID
传给对方函数,对方执行完毕后,会把这个唯一标示UniqueID
和返回数据data
传回来,然后通过这个UniqueID
找到调用函数CallBack
,然后执行CallBack(data)
ネイティブでデータを取得した後、次を実行します:
メソッドが呼び出されて実行され、Nativeからのデータが正常に受信されますwebview.loadUrl(javascript:getUseID(userid););
H5のgetUseID
完全な JSBridge の場合は、上記の 3 番目の点を考慮する必要があります。あなたは Android ハイブリッドを開発していて、車輪を与えるには JSBridge が必要です。読んだら良いです
http://www.cnblogs.com/dailc/...