javascript - Soalan mengenai komunikasi pelanggan dan bahagian hadapan?
大家讲道理
大家讲道理 2017-05-16 13:27:34
0
1
652

Pelanggan menggunakan WebViewClient类的shouldOverrideUrlLoadingkaedah untuk mengendalikan komunikasi antara bahagian hadapan dan pelanggan. Dalam kes ini, bagaimanakah bahagian hadapan mengetahui panggilan balik pemprosesan pelanggan?
Keadaannya adalah seperti berikut:

  1. Hujung hadapan menghantar alamat protokol yang diberikan, seperti mendapatkan pengguna semasajsbridge://bridge/userid

  2. Pelanggan menangkap beban ini dan mula melakukan operasi, seperti menulis nilai ke bahagian hadapanjavaScript:window.userId=12121

window.location.href = "jsbridge://bridge/userid"

console.log(window.userId) //这样貌似拿不到userId

setTimeout(function() {
   console.log(window.userId) //这样就可以拿到了。
}, 1000)

Apakah yang perlu kita lakukan dalam senario ini?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(1)
Peter_Zhu

Pemahaman saya ialah untuk memahami JSBridge, anda akhirnya perlu memahami tiga perkara Satu ialah cara H5 memanggil Native, satu lagi ialah cara Native memanggil H5, dan yang terakhir ialah panggilan balik antara keduanya.

  • Cara untuk memanggil Native dalam H5, kaedah di Internet semuanya sama, iaitu apabila WebView memuatkan halaman H5, ia akan memanggil kaedah dalam WebChromeClient atau WebviewClient kod>, pilih salah satu daripadanya, Untuk memintas data H5 dan menyerahkannya kepada Native untuk diprosesWebChromeClient或者是WebviewClient中的方法,选取其中的一个,来截取H5的数据,交由Native处理

  • Native如何调用H5,归根结底就是一条,webview.loadUrl(javascript:yourFunc(data););会把数据传给H5并执行H5中的yourFunc这个方法

  • 两者之间的回调,即Native或者H5处理好对方的调用后,把结果返回给对方,供对方使用。本质就是把调用函数Callback使用时间戳或者其他的唯一标识通过Map组织起来,即Map(UniqueID,Callback),并把此唯一标示UniqueID传给对方函数,对方执行完毕后,会把这个唯一标示UniqueID和返回数据data传回来,然后通过这个UniqueID找到调用函数CallBack,然后执行CallBack(data)

从你的描述中可以知道,你现在是迷失在第二点上了,你需要在H5中写一个JS方法:

function getUseID(userid){
console.log(userid);
}

Native中拿到数据后,执行:

webview.loadUrl(javascript:getUseID(userid););

H5中的getUseID

Cara Native memanggil H5, dalam analisis akhir, ia hanyalah satu perkara, webview.loadUrl(javascript:yourFunc(data); akan menghantar data ke H5 dan melaksanakan yourFunc dalam H5 Kaedah ini




Panggil balik antara kedua-duanya bermakna selepas Native atau H5 mengendalikan panggilan pihak yang satu lagi, ia mengembalikan hasilnya kepada pihak yang satu lagi untuk digunakan oleh pihak yang satu lagi. Intinya adalah untuk mengatur fungsi panggilan Panggilan Balik melalui Peta menggunakan cap masa atau pengecam unik lain, iaitu, Peta (UniqueID, Panggilan Balik) dan hantar pengecam unik ini UniqueID kepada pihak lain Selepas fungsi tersebut dilaksanakan, pihak yang satu lagi akan menghantar kembali pengecam unik UniqueID dan data pulangan data dan kemudian menggunakan UniqueID ini. untuk mencari fungsi panggilan CallBack, kemudian laksanakan CallBack(data)

  • Dapat dilihat dari penerangan anda bahawa anda tersesat di titik kedua Anda perlu menulis kaedah JS dalam H5:

    rrreee
  • Selepas mendapat data dalam Native, laksanakan:
  • webview.loadUrl(javascript:getUseID(userid););

  • Kaedah getUseID dalam H5 akan dipanggil dan dilaksanakan, dan data akan berjaya diterima daripada Native
  • Jika ia JSBridge yang lengkap, perkara ketiga di atas mesti diambil kira.

  • Anda sedang membangunkan Android Hybrid, dan anda memerlukan JSBridge
untuk memberi anda roda, yang ditulis oleh hantu berkepala besar: 🎜https://github.com/JerryMissT...🎜Saya mengesyorkan beberapa blog, mereka masih bagus selepas membacanya🎜 🎜 🎜🎜http://www.cnblogs.com/dailc/...🎜🎜 🎜🎜http://blog.csdn.net/qq_23547...🎜🎜 🎜🎜http://zjutkz.net/2016/04/17/...🎜🎜 🎜
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan