zoukankan      html  css  js  c++  java
  • H5与Android和Ios之间的交互

    H5页面是由uni-App框架开发的,有想了解的可以先了解下uni-App这个框架:https://uniapp.dcloud.io/README。(用来写H5自我认为很方便。


      uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。

    uni-App这个框架是通过专用的编译器来完成编译及打包的--->  HBuilder X 

    接下来就进入正题:

      H5与两端交互问题(Android和Ios) 其实也算是挺简单的吧!

    比如说调用相册,打开相机,上传,下载,登录等,当然,这里调用的方法不是固定的,是需要你和两端商量提供给你的方法。如下代码所示,

    注:区分两端的方法我们这里使用了uni-App里的  uni.getSystemInfo  方法

    devices.js  页面


    // 给客户端发消息 export const webJSBridge = (type, params = {}) => { uni.getSystemInfo({ success: (res) => { const isIOSDevices = res.platform === "ios"; switch (type) { case "share": if (isIOSDevices) { window.webkit.messageHandlers.share.postMessage( JSON.stringify(params) ); } else { window.android.share(JSON.stringify(params)); } break; case "wechatLogin": if (isIOSDevices) { window.webkit.messageHandlers.wxLogin.postMessage( JSON.stringify(params) ); } else { window.android.wxLogin(JSON.stringify(params)); } break; case "QQLogin": if (isIOSDevices) { window.webkit.messageHandlers.qqLogin.postMessage( JSON.stringify(params) ); } else { window.android.qqLogin(JSON.stringify(params)); } break; case "saveImage": if (isIOSDevices) { window.webkit.messageHandlers.saveImage.postMessage( JSON.stringify(params) ); } else { window.android.saveImage(JSON.stringify(params)); } break; case "takePhoto": if (isIOSDevices) { window.webkit.messageHandlers.takePhoto.postMessage( JSON.stringify(params) ); } else { window.android.takePhoto(JSON.stringify(params)); } break; case "choosePhoto": if (isIOSDevices) { window.webkit.messageHandlers.choosePhoto.postMessage( JSON.stringify(params) ); } else { window.android.choosePhoto(JSON.stringify(params)); } break; case "captureScreen": if (isIOSDevices) { window.webkit.messageHandlers.captureScreen.postMessage( JSON.stringify(params) ); } else { window.android.captureScreen(JSON.stringify(params)); } break; case "jsbridgeHandle": // const params = { // type: 1,1 关闭2 开始AI运动3 vip弹框4 去运动圈弹框5截长图6 分享 7保存图片 8复制到剪切板 // callbackName: "", // data: {}, // }; if (isIOSDevices) { window.webkit.messageHandlers.jsbridgeHandle.postMessage( JSON.stringify(params) ); } else { window.android.jsbridgeHandle(JSON.stringify(params)); } break; default: break; } }, }); }; // 接收消息 export const getDeviceMessageFunc = (self) => { window.wxLoginResult = (res) => { self.$bus.emit("getDeviceMessage", { ...res, type: "wxLogin", }); }; window.qqLoginResult = (res) => { self.$bus.emit("getDeviceMessage", { ...res, type: "qqLogin", }); }; window.choosePhotoResult = (res) => { self.$bus.emit("getDeviceMessage", { ...res, type: "choosePhoto", }); }; window.takePhotoResult = (res) => { self.$bus.emit("getDeviceMessage", { ...res, type: "takePhoto", }); }; window.reloadCalendar = (res) => { self.$bus.emit("getDeviceMessage", { ...res, type: "reloadCalendar", }); }; };

      

    App.vue 页面:
    
    <script>
    import VConsole from "vconsole";
    import { getDeviceMessageFunc } from "@/utils/devices.js";
    export default {
      onLaunch: function () {
        // const vConsole = new VConsole();
        getDeviceMessageFunc(this);
        
      },
      onShow: function () {},
      onHide: function () {},
    };
    </script>
    

      

    努力到无能为力,拼搏到感动自己。 欢迎大家在下方多多评论。
  • 相关阅读:
    openssl对数组加密解密的完整实现代码
    OpenSSl 加密解密 示例(终于有编程实践了)
    QT中QProcess调用命令行的痛苦经历(调用Winrar,设置工作目录,获得输出,注意引号与括号,等等)
    Ubuntu 14.04远程登录服务器--openssh的安装和配置简明步骤
    可复用的批量文件修改工具
    TFS二次开发、C#知识点、SQL知识
    Backbone.js的技巧和模式
    Hibernate:如何映射聚合?
    JavaScript之创建对象
    为什么选择MongoDB?
  • 原文地址:https://www.cnblogs.com/wasbg/p/15802482.html
Copyright © 2011-2022 走看看