運用場景描述:在H5端點擊頁面的發(fā)送按鈕通知APP打開微信分享功能,交互寫在發(fā)送事件函數中沽损,調起微信分享功能由app端操作
//給到app的json參數
let jsonData = {
reload: this.$route.query.no_reload ? false : true, //true需要重新加載返回列表頁灯节,false不需要(根據需求定)
title: '上門試駕邀請', // 分享標題
desc: '邀請您試駕體驗xxxx', // 分享描述
link: 'https://xxxxx', // 分享鏈接
imgUrl: '', // 分享圖標
}
多記錄一點,因為app那邊使用的是友盟的分享,分享的圖片鏈接如果是http的显晶,在IOS中圖片會顯示錯誤4丁!磷雇!如果鏈接錯誤不存在可能導致調不起分享偿警。
//
判斷設備
device() {
let u = window.navigator.userAgent;
//android終端
let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
//ios終端
let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
return {android: isAndroid, ios: isiOS}
},
JS與IOS交互方式一:WKScriptMessageHandler
WKWebView有一個內容交互控制器,該對象提供了通過JS向WKWebView發(fā)送消息的途徑唯笙。需要設置MessageHandler螟蒸,大家把這個功能簡稱為MessageHandler。
IOS具體實現(xiàn)參考:鏈接
這里只說js調用
// window.webkit.messageHandlers.<name>.postMessage(<messageBody>)
// 這個name就是設置MessageHandler的第一個參數崩掘,與IOS約定的方法名
// messageBody 必須是json格式七嫌,為空時傳null
window.webkit.messageHandlers.ShareContract.postMessage(jsonData);
JS與IOS交互方式二:WebViewJavascriptBridge交互 攔截url做事件處理,如果要傳參數苞慢,不建議用這種
//模擬 h5頁面在app端的跳轉
let data = '{"type": "basisTongji", "url":"' + "https://xxxx/basisTongji.html" + "}";
window.WebViewJavascriptBridge.javaScrpitRresponseJson(data);
Android端交互
image.png
冒號前面區(qū)分是什么功能诵原,冒號后面是接收的參數
window.location.href = "ShareContract:" + JSON.stringify(jsonData);
運用場景二:登錄失效的情況下,通知APP端挽放,需要跳轉到登錄頁面
- exit:true是和安卓約定的功能名及參數
- logout 是和IOS約定的方法名绍赛,注意當值為空的時候,需要傳null辑畦,不能什么都不寫吗蚌,不然會走代理。纯出。蚯妇。(ios說的)
let deviceP = device()
if (deviceP.android) {
window.location.href = "exit:true"
}
if (deviceP.ios) {
//ios 交互
window.webkit.messageHandlers.logout.postMessage(null);
}