• Android

调用Android原生方法 直接Android.方法名就可以,方法名由原生提供

  • IOS

首先在created方法中全局挂载IOS指定的返回函数,用以接收返回数据
再去调用IOS的方法 window.webkit.messageHandlers.方法名.postMessage(params) params是传递的参数(如果需要的)
uni-app实际开发中 需要在created中注册 onLoad中注册无法生效

  • 以调用原生方法获取经纬度为示例
export default {
    computed: {
        u() {
            return navigator.userAgent;
        },
        isAndroid() {
            return this.u.indexOf("Android") > -1 || this.u.indexOf("Adr") > -1;
        },
        isiOS() {
            return !!this.u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
        }
    },
    methods: {
        /** 获取当前设备的系统 Android 还是 IOS */
        getDeviceType() {
            if (this.isAndroid) {
                let androidRes = Android.getLnglat();
                // 数据处理 xxx
            } else if (this.isiOS) {
                let params = {
		            getgps: "getgps",
                };
                window.webkit.messageHandlers.getGPSInfo.postMessage(params);
            }
        },
        /** window全局注册的ios的返回函数 */
        passGPSInfo(res) {
            console.log(res)
            // 数据处理 xxxx
        }
    },
    created() {
        window.passGPSInfo = this.passGPSInfo;
    }
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐