H5頁面與安卓及ios交互

安卓: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){};
    }
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章