項(xiàng)目需求是 ?點(diǎn)擊網(wǎng)頁的返回无畔,返回到原生APP棍鳖,所以要截獲網(wǎng)頁的返回事件扛点。
原理是和網(wǎng)頁端協(xié)議好一個URL(字符串)透葛,具體格式就隨便定義啦
在手機(jī)上點(diǎn)擊H5的返回按鈕時web會把這個協(xié)商好的URL傳給OC及刻,OC有一個uiwebview的代理方法可以截獲H5的所有JS事件镀裤,所以我們要寫UIwebview的代理事件并遵循協(xié)議,在協(xié)議方法里過濾其他事件只取返回事件缴饭,然后在返回事件里實(shí)現(xiàn)返回原生APP的功能暑劝。
上代碼:web那邊就這么寫
iOS這邊就這么寫
第二個需求是,導(dǎo)航欄是原生的颗搂,點(diǎn)擊H5某一按鈕跳轉(zhuǎn)到H5的下級界面后担猛,點(diǎn)擊導(dǎo)航欄的返回,直接反到原生APP的上級界面而不是H5的上級界面丢氢,這肯定是不符合邏輯的傅联。正確的應(yīng)該是點(diǎn)擊導(dǎo)航欄的返回,先返回H5的首界面疚察,再次點(diǎn)擊才返回原生APP的上級界面蒸走。解決方法如下: