当前位置: 首页 > 工具软件 > AppJS > 使用案例 >

JS跟APP交互——H5调用原生APP的方法

孟德曜
2023-12-01

js向app传值问题

最近做的H5项目是需要嵌入到APP内使用的,这就涉及到js跟app交互的问题,我这边需要传值给app,以下是我在做项目过程中传值的方法,仅供参考。

解决方法

AppData这个JSON对象是我们需要向后台传的所有值,同时我们需要判断终端设备,IOS终端需要加上window.webkit.messageHandlersdeliveryClueID这个是原生方法名。

var AppData = Object.assign(
                    {loanID:this.loanId},
                    {orderState:this.orderState}
                  );
              var u = navigator.userAgent,
                app = navigator.appVersion;
              //android终端或者uc浏览器
              var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; 
              //ios终端
              var isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X)/); 
              
              if(isiOS){
                window.webkit.messageHandlers.deliveryClueID.postMessage(AppData);
              }else if(isAndroid){
                android.deliveryClueID(JSON.stringify(AppData));
              }

或者你还可以这样?
这是网上别人方法,JS调用Android原生。

//第一种
JavaScript:android.原生方法名(params);
//第二种
window.android.原生方法名(params);

然后APP端需要做如下配置。
这是 IOS配置跟调用方法,deliveryClueID是原生方法名,做IOS的大佬应该知道的。

let conf = WKWebViewConfiguration()
        conf.userContentController = WKUserContentController()
        conf.preferences.javaScriptEnabled = true
        conf.selectionGranularity = WKSelectionGranularity.character
        /// h5 调用 swift 提供的方法
        conf.userContentController.add(self, name: deliveryClueID)
        webView = WKWebView( frame: CGRect(x:0, y:KHeight_NavBar,width:kScreenWidth, height:kScreenHeight - KHeight_NavBar),configuration:conf)

Android怎么配置我就不知道了emmm。。。等我知道了再更吧!

 类似资料: