問題描述:App中嵌入h5頁面下面,調(diào)起app native之后返回h5頁面 此時(shí)刷新頁面(如支付點(diǎn)擊已完成未完成)注入的jsBridge失效 流程如下圖:
- 在第0步中app創(chuàng)建webView并且注入jsBridge(用于h5 js調(diào)起native方法)
- 在第1步中調(diào)用jsBridge調(diào)起收銀臺(tái)的方法 喚起一個(gè)native頁面
- 在第2步中無論支付成功失敗喷舀,點(diǎn)擊返回至訂單詳情餐禁,出現(xiàn)彈框確認(rèn)是否支付完成
- 在第3步中點(diǎn)擊完成按鈕 刷新頁面 更新訂單狀態(tài)
導(dǎo)致結(jié)果: jsBridge失效 如果沒有支付完成的話 再次支付 無法調(diào)起收銀臺(tái)
提出解決方案(兩種)
第一種
- 在返回至H5頁面是 點(diǎn)擊調(diào)用window.location.reload()方法
- app去抓取reload()方法
- 調(diào)用app的reload方法(銷毀原有webView 創(chuàng)建新的webView 注入JsBridge)
第二種
a. jsBridge提供reload方法(做的事件就是reload整個(gè)webView翩肌,即上面說的ios自刷新的功能)
b. 在返回至H5頁面是 點(diǎn)擊調(diào)用jsBridge.reload()方法
如下圖所示:
結(jié)論:畫出流程圖很明顯第二種方案要優(yōu)秀一點(diǎn) 根據(jù)目的來選擇解決方案