安卓:addJavascriptInterface方式
forum_context.addJavascriptInterface(AndroidtoJs(this), "AddNoticeAndroid")
// 繼承自Object類
public class AndroidtoJs extends Object {
BaseActivity activity;
public AndroidtoJs(BaseActivity activity) {
this.activity=activity;
}
// 定義JS需要調用的方法
// 被JS調用的方法必須加入@JavascriptInterface註解
@JavascriptInterface
public void callSendSuc() {
activity.setResult(5000);
activity.finish();
}
}
IOS:WKWebView的MessageHandler
if (message.name isEqualToString:@"callSendSuc"]) {
if([message.body isEqualToString:@"success"]){
//成功時執行
} else if ([message.body isEqualToString:@"fail"]){
//失敗時執行
}
NSLog(@"%@",message.body);
}
前端:
config = {
"isAndroid": /Android/i.test(navigator.userAgent),//判斷是否爲移動端
"isIOS": !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)//判斷是否爲IOS
};
//請求的的回調方法
function callback(r) {
if (r) {
/**
* H5事件回調
* @type IOS wkwebview
*/
alert('新建成功');
/**
* 安卓事件回調
* @type Android webview
* @function addJavascriptInterface安卓所使用的交互方式
* @memberof AddNoticeAndroid
*/
window.config.isAndroid && window.AddNoticeAndroid.callSendSuc();
/**
* IOS事件回調
* @type IOS wkwebview
*/
if (window.config.isIOS) {
try{window.webkit.messageHandlers.callSendSuc.postMessage("此處必須有內容");}catch (e){};
}
}
}