(转)H5和IOS/安卓通信解决方案

这篇具有很好参考价值的文章主要介绍了(转)H5和IOS/安卓通信解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目背景:现有H5项目,要快速完成一个app开发,由于周期紧张只能先用H5套壳完成一版app。在其中,涉及到不同端的交互。

如果业务逻辑比较复杂,比如页面需要获取 IOS 端传回的返回值,或者 IOS 端需要调用 js 方法。可以通过第三方库来实现,我们项目用的是 WebViewJavascriptBridge。

使用WebViewJavaScriptBridge交互封装,统一管理,方便维护。


```

判断不同访问终端

function browserVersion(){

    var u = navigator.userAgent;

    return {

        trident: u.indexOf('Trident') > -1, //IE内核

        presto: u.indexOf('Presto') > -1, //opera内核

        webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核

        gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐内核

        mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端

        ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端

        android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端

        iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器

        iPad: u.indexOf('iPad') > -1, //是否iPad

        webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部

        weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)

        qq: u.match(/\sQQ/i) == " qq" //是否QQ

    };

一 、什么是webViewjavascripBridge?

WebViewJavascriptBridge是移动UIView和Html交互通信的桥梁,用白话来说就是实现java(ios为oc)和js的互相调用的桥梁。替代了WebView的自带的JavascriptInterface的接口,使得我们的开发更加灵活和安全。


二、如何在vue项目中使用

创建 src/utils/bridge.js 文件,用于封装 WebViewJavascriptBridge将以下代码拷贝到 bridge.js 文件中。

function setupWebViewJavascriptBridge (callback) {

  if (window.WebViewJavascriptBridge) {

 return callback(window.WebViewJavascriptBridge)  }

  if (window.WVJBCallbacks) {

 return window.WVJBCallbacks.push(callback)  }

  window.WVJBCallbacks = [callback]

  let WVJBIframe = document.createElement('iframe')

  WVJBIframe.style.display = 'none'

  WVJBIframe.src = 'https://__bridge_loaded__' document.documentElement.appendChild(WVJBIframe)

  setTimeout(() => {

 document.documentElement.removeChild(WVJBIframe)  }, 0)

}


export default {

 callhandler (name, data, callback) {

 setupWebViewJavascriptBridge(function (bridge) {

 bridge.callHandler(name, data, callback)    })

 },


 registerhandler (name, callback) {

 setupWebViewJavascriptBridge(function (bridge) {

 bridge.registerHandler(name, function (data, responseCallback) {

 callback(data, responseCallback)

 })  })   }}

在 main.js 中引入该文件

import Bridge from './utils/bridge.js'

Vue.prototype.$bridge = Bridge

在需要调用客户端方法的组件中(事先需要与客户端同事约定好方法名)

this.$bridge.callhandler('ObjC Echo', params, (data) => {

  // 处理返回数据

})

当客户端需要调用 js 函数时,事先注册约定好的函数即可

this.$bridge.registerhandler('JS Echo', (data, responseCallback) => {

    alert('JS Echo called with:', data)  responseCallback(data)

})




链接:https://www.jianshu.com/p/fd4f7230b06a文章来源地址https://www.toymoban.com/news/detail-428798.html

到了这里,关于(转)H5和IOS/安卓通信解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信公众号 - 禁用 H5 网页长按图片时弹出的菜单(转发给朋友 / 保存到手机 / 收藏 / 搜一搜),苹果安卓系统都可暴力 100% 完美禁用菜单,任何前端框架、任何浏览器都适用的解决方案

    关于微信公众号 H5 网站禁用长按弹出菜单的教程,网上的解决方案几乎都不好使,要么不兼容要么代码臃肿。 本文实现了 公众号网站或普通网站开发,强力禁用 “长按图片” 时弹出的微信菜单, 按照本文提供的代码,保证任何前端技术、任何苹果安卓系统都可行有效 10

    2024年02月13日
    浏览(55)
  • vue项目h5端判断所处环境(支付宝、微信、判断安卓和iOS环境)

    一、判断是否为支付宝坏境 isAlipayClient () {     if (navigator.userAgent.indexOf(\\\'AlipayClient\\\') -1) {       return true     }     return false   }, 二、判断安卓还是ios   phoneOs () {     var u = navigator.userAgent,       isAndroid = u.indexOf(\\\'Android\\\') -1 || u.indexOf(\\\'Linux\\\') -1,       isiOS = !!u.match(/(i[^;]+;(

    2024年02月07日
    浏览(71)
  • video视频背景层级过高解决方案

    uni-app开发的项目中使用video标签设置视频做为页面背景,video标签层级过高,页面中内容不展示。 官方提供了三种办法: cover-这个标签使用说明:这个标签APP端它不支持嵌套,就是就算这种都是不支持的,所以如果你的页面比较复杂的话这种方法是不行的,页面元素简单的话

    2024年02月03日
    浏览(38)
  • 现代 CSS 解决方案:文字颜色自动适配背景色!

    在 23 年的 CSS 新特性中,有一个非常重要的功能更新 -- 相对颜色 。 简单而言,相对颜色的功能,让我们在 CSS 中,对颜色有了更为强大的掌控能力。 其核心功能就是,让我们 能够基于一个现有颜色 A,通过一定的转换规则,快速生成我们想要的颜色 B 。 其功能能够涵盖:

    2024年02月03日
    浏览(52)
  • 安卓APP抓包解决方案(教程)

      在我们日常的渗透测试工作中经常会发现手机APP抓取不到数据包的情况,本篇文章讲解的是通过postern代理软件来全局转发流量至charles联动BURP来对APP进行渗透,在这套环境配置完成之后可以为你后面的app抓包省下不少时间与麻烦。 kali windows burpsuite 夜神模拟器 Android7.0以

    2023年04月12日
    浏览(42)
  • iOS多语言解决方案全面指南

    本文以及相关工具和代码旨在为已上线的iOS项目提供一种快速支持多语言的解决方案。由于文案显示是通过hook实现的,因此对App的性能有一定影响;除了特殊场景的文案显示需要手动支持外,其他任务均已实现自动化。 本文中的部分脚本代码基于 ChatGPT4.0 和 Github Copilot 完成

    2024年02月11日
    浏览(34)
  • iOS rootless无根越狱解决方案

    据游戏工委数据统计,2023年国内游戏市场实际销售收入与用户规模双双创下新高, 游戏普遍采用多端并发方式,成为收入增长的主因之一。 中国市场实际销售收入及增长率丨数据来源:游戏工委 多端互通既是机遇,也是挑战。 从游戏安全的角度来看,多端互通意味着游戏

    2024年01月23日
    浏览(40)
  • h5 视频全屏-横屏实现,遇到问题以及解决方案

    最近需要实现h5 视频全屏也就是横屏,横屏后需要将相关视频展现在侧边栏。考虑到h5是不能让手机强制横屏的,只能考虑用css 样式上横屏显示video 思路就是--利用position:fixed 定位,对于视频容器元素 transform 旋转90deg,容器的宽高调整为如下 但是遇到一个问题,就是旋转后

    2024年02月13日
    浏览(47)
  • uniapp开发微信小程序,webview内嵌h5,h5打开pdf地址,解决方案

    根据公司要求,让我写一个h5,后续会嵌入到合作公司的微信小程序的webview中,如果是自己公司微信小程序,可以采取先下载下来pdf,然后通过wx.openDocument,进行单纯的预览操作,这个可以根据这个老哥的文章去操作。但是因为是合作方公司,故只能自己想办法,起初想到的

    2024年02月07日
    浏览(50)
  • Unity 之 安卓平台上架隐私问题解决方案

    场景 1: APP 未见向用户明示个人信息收集使用的目的、方式和范围,未经用户同意,存在收集 Android ID、SIM 卡信息的行为。(存在风险) 场景 2: APP 未见向用户明示 SDK 收集使用个人信息的目的、方式和范围,未经用户同意,SDK 存在收集 com.unity3d.player 获 取 SIM 卡信息、c

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包