• vue 调用 ios提供的方法


    各种百度之后,在别的站看到一篇文章,介绍可以使用 WebViewJavascriptBridge与原生app进行通信;

    在项目中尝试了一下,确实有效记录一下。

    原文链接:

    https://blog.csdn.net/szjSmiling/article/details/82773293

    1,引入第三方WebViewJavascriptBridge的库

     1     function setupWebViewJavascriptBridge(callback) {
     2       if (window.WebViewJavascriptBridge) {
     3         return callback(window.WebViewJavascriptBridge)
     4       }
     5       if (window.WVJBCallbacks) {
     6         return window.WVJBCallbacks.push(callback)
     7       }
     8       window.WVJBCallbacks = [callback]
     9       let WVJBIframe = document.createElement('iframe');
    10       WVJBIframe.style.display = 'none'
    11       WVJBIframe.src = 'https://__bridge_loaded__'
    12       document.documentElement.appendChild(WVJBIframe);
    13       setTimeout(() => {
    14         document.documentElement.removeChild(WVJBIframe)
    15       }, 0)
    16     }
    17     export default {
    18       callhandler(name, data, callback) {
    19         setupWebViewJavascriptBridge(function (bridge) {
    20           bridge.callHandler(name, data, callback)
    21         })
    22       },
    23       registerhandler(name, callback) {
    24         setupWebViewJavascriptBridge(function (bridge) {
    25           bridge.registerHandler(name, function (data, responseCallback) {
    26             callback(data, responseCallback)
    27           })
    28         })
    29       }
    30     }

    新建一个js文件,把上面的代码复制粘贴就好了

    2,在main.js中引入文件

    import Bridge from './assets/js/bridge.js'
    
    Vue.prototype.$bridge = Bridge

    3,调用方法

    let ua = navigator.userAgent;
                let isAndroid = ua.indexOf('Android') > -1 || ua.indexOf('Adr') > -1;
                let isiOS = !!ua.match(/(i[^;]+;( U;)? CPU.+Mac OS X/);
                // console.log(isAndroid, '安卓')
                // console.log(isiOS, 'ios')
                if (isiOS) {
    
                    this.$bridge.callhandler('popToStudyRootVC', (data) => {
                        // 处理返回数据
                        console.log(data, '我走了这里')
                    })
                }
    popToStudyRootVC:是有原生开发的同事定义的方法名

    这样就完成了

  • 相关阅读:
    微信小程序开发中遇到的问题之自定义导航栏
    微信小程序调用支付时遇到的问题缺少参数:total_fee
    微信小程序开发中遇到的问题之wx.previewImage
    svg和canvas的对比
    AngularJs中使用ng-if后ng-model无效
    网站开发的性能优化
    webpack前端工程化构建工具的使用
    synchronizationContext线程同步学习
    图像处理显卡选择
    oracle 32位学习
  • 原文地址:https://www.cnblogs.com/yutianA/p/11200768.html
Copyright © 2020-2023  润新知