webApp中H5和原生交互

h5页面如何与原生交互 本文讲述h5页面跟原生通信,比如在app内,调用相机,获取相册内的图片,在app内拉起微信小程序等等,h5页面没有这么多权限能够直接调用移动端的原生能力,这个时候就需要与原生进行通讯,传递一个信号给原生这边,然后原生直接调用手机端的能力。下面分别讲解h5与Android,ios系统通信。 阅读详情

开发webAPP的过程中,通常因为业务逻辑或兼容性问题,需要H5和原生APP之间互相调用,以下为具体的代码

  • 操作系统判断

    通过浏览器提供的navigator.userAgent判断当前操作系统

function paltform() {
  var ua = navigator.userAgent.toLowerCase()
  //微信
  if (ua.indexOf('micromessenger') !== -1) return 'wechat'
  //ios (ipad/iphone)
  if (ua.indexOf('iphone') !== -1 || ua.indexOf('ipad') !== -1) return 'ios'
  //android
  if (ua.indexOf('android') !== -1) return 'android'
  //PC
  return 'desktop'
}

安卓和iOS通信方法是有区别的,iOS通过jsBriage来实现的

  • H5中添加方法
//paltform可引用上面的判断方法
function () {
  window.$NATIVE = {}
  //iOS jsBriage
  function setupWebViewJavascriptBridge(callback) {
    if (window.WebViewJavascriptBridge) {
      return callback(window.WebViewJavascriptBridge)
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback)
    }
    window.WVJBCallbacks = [callback]
    var WVJBIframe = document.createElement('iframe')
    WVJBIframe.style.display = 'none'
    WVJBIframe.src = 'https://__bridge_loaded__'
    document.documentElement.appendChild(WVJBIframe)
    setTimeout(function () {
      document.documentElement.removeChild(WVJBIframe)
    }, 0)
  }
  
  return new Promise((resolve, reject) => {
    if (paltform === 'ios') {
      //iOS
      setupWebViewJavascriptBridge(function (bridge) {
        //注册给原生调用的方法
        bridge.registerHandler('NATIVE_XX', function () {
          //....相关操作
        })
        //注册原生提供的的方法
        window.$NATIVE.XXX_XX = (a,b = 0) =>
          new Promise((resolve, reject) => {
            bridge.callHandler('XXX_XX', [a, b], function responseCallback(
              value
            ) {
              resolve(value)
            })
          })
          //如果不需要返回promise格式,可以直接调用   
          //bridge.callHandler('XXX_XX', [a, b])
      })
    } else if (paltform === 'android') {
      //安卓
      //注册给原生调用的方法
      window.NATIVE_XX = function (value) {
        //....相关操作
      }
      //注册原生提供的的方法
      window.$NATIVE.XXX_XX = (a, b = 0) => {
        return new Promise((resolve, reject) => {
          resolve(window.APP.XXX_XX([a, b]))
        })
        //如果不需要返回promise格式,可以直接调用   
        //window.APP.XXX_XX([a, b])
      }
    }
    
  })
}

上述代码中的XXX_XX和window.NATIVE_XX中的XX都是和原生APP(安卓和iOS)约定好的方法名和,出入参也需要和APP约定好

  • 调用方法(不区分安卓和iOS)
//promise格式调用
window.$NATIVE.XXX_XX(1,2).then(value => 
    // 获取有效值并添加相应操作
    console.log(value)
})

//普通格式调用
window.$NATIVE.XXX_XX(1,2)

H5提供给原生APP的方法,安卓和iOS开发分别在各自的代码中按照约定的方法名和参数调用即可,这样原生APP和h5之间就可以互相调用,双向通信了

RK3568平台开发系列讲解:内核启动流程 第 493 行的 ENTRY 指明了了 Linux 内核入口,入口为stext,stext 定义在文件arch/arm/kernel/head.S 中 , 因此要分析Linux 内核的启动流程,就得先从文件arch/arm/kernel/head.S 的 stext 处开始分析。_mmap_switched 定义在文件 arch/arm/kernel/head-common.S,__mmap_switched 最终会调用 start_kernel 函数。⑥、r2=atags 或者设备树(dtb)首地址。 阅读详情

相关推荐

AI赋能工业自动化:传感器大数据实战

工业自动化中AI与传感器大数据的结合,显著提升了生产效率与可靠性。关键技术包括实时数据处理、边缘计算和数字孪生,未来将进一步向自主决策系统演进。

AFAGA_x的博客 413

h5和app原生通信的方法,什么是jsBridge,jsBridge 原理和步骤

JSBridge 是一种机制,用于在 WebView 中的 JavaScript 和原生应用之间进行通信。它允许 JavaScript 代码调用原生应用的方法,并且允许原生应用调用 JavaScript 中的方法,实现了两者之间的双向通信。

有一棵树的博客 4941

AutoSAR开发实战:如何用Matlab/Simulink从零搭建SWC组件(附完整代码示例)

本文详细介绍了使用Matlab/Simulink从零开发AutoSAR SWC组件的全流程,包括环境配置、ARXML文件导入、算法模型开发、代码生成与集成验证等关键步骤。通过实战案例和完整代码示例,帮助开发者掌握AutoSAR标准下的软件开发技术,提升汽车电子系统的开发效率。

weixin_29093017的博客 256

H5与原生app的三种交互方式

1.app 调用 h5 的代码 与app进行预定。H5暴露全局方法提供给app调用 代码` javascript window.sdk = { double = value => value * 2, triple = value => value * 3, }; android: webview.evaluateJavascript('window.sdk.double(10)'...

qq_42711864的博客 6977

深入解析数据通信中的码元速率与比特率:从基础到实战应用

本文深入解析了数据通信中的核心概念码元速率与比特率,通过生动的比喻和公式(比特率=波特率×log₂(M))揭示其本质关系。文章结合BPSK、QPSK、16QAM等调制技术,剖析了从4G/5G到LoRa等实战场景中如何权衡速率、距离与可靠性,并提供了软考真题解析与系统设计建议,帮助读者从理论到应用全面掌握数据速率优化。

weixin_29324877的博客 213

销售预测的方法与模型(三)丨安全库存与再订货(补货)

较高的 Z 值对应较高的服务水平(例如,服务水平 99% 对应 Z 值 2.33),意味着企业希望更低的缺货风险,因此需要更高的安全库存。在再订货点的管理中,考虑到供应商交货的不确定性,通常需要结合安全库存,以防止在交货期间库存用尽。要对L开根号,根号L表示交货周期越长,企业需要的安全库存越多,因为在较长的供应期内,需求波动的累积效应更明显。举例:供应商的交期服从标准差为2件/天的正态分布,顾客需求为50件/天的正态分布,若要客户服务水平达到 90%,安全库存量应该是多少?下面介绍几种核心的模型与公式。

weixin_45675709的博客 1534

H5 webapp 实现分享功能

HBuilder webapp 实现分享功能 在webapp要实现分享首要需要去社区开放平台进行申请 腾讯开放平台:https://open.tencent.com/ 在腾讯开放平台上的QQ与微信开放平台中申请创建应用,一般没什么要求都是可以通过的。 应用审核通过后就可以获得分享的权限了 在SDK配置中填入申请到的应用ID等信息 代码 在 mui.plusReady中加入下面代码获取分享参数...

丘秋的博客 8589

Cadence Virtuoso里搞定斩波运放AC仿真:PSS+PAC保姆级设置避坑指南

然而,当工程师们尝试在Cadence Virtuoso环境中对这种特殊结构进行AC特性分析时,往往会遇到传统AC仿真方法失效的困境——这正是PSS(Periodic Steady-State)与PAC(Periodic AC)仿真组合大显身手的场景。实际项目中我们常采用"先快后精"的两步法:先用快速设置确认大体趋势,再针对关键频段进行精细仿真。例如某次设计迭代中,将harmonics从10增加到20后,发现在1MHz处的相位裕度估算误差达15°,这解释了之前样机测试时的振荡问题。

weixin_33508411的博客 449

鸿蒙——H5和原生是怎么通信的?

首先通过原生端的webviewController进行创建通信端口,createMessagePorts, 该方法会创建两个端口,一个用作原生端,一个用作h5端。此时,h5端用接收的端口发送消息给原生端,原声端用自己剩余的端口进行onMessage接听消息,此时就可以实现双向通信。需要注意的点: 如果原生端的sdk方法是个异步方法,在h5端无法及时得到结果,此时需要再用原生反调h5进行传递结果。原生端可以通过javascriptProxy给h5页面注入可用的sdk应用方法集合,在h5完成初始化后,可。

priest44的博客 2124

关于112G和56G PAM4信号的有效回损(ERL)

本文探讨了回波损耗(RL)对高速数字通信系统性能的影响,重点分析了时域信道运行裕度(COM)与频域回波损耗指标的关联性。研究表明,传统频域回波损耗指标在预测系统性能时存在假阳性/假阴性问题,特别是对PAM-4信号系统影响更为显著。通过引入基于时域脉冲响应的有效回波损耗(ERL)指标,并结合判决反馈均衡器(DFE)的补偿效应,可更准确评估系统性能。实验表明,短封装器件虽然频域回波损耗较差,但在实际系统中表现更优。研究提出通过时域门控加权等方法优化ERL计算,为高速互连设计提供了更可靠的性能评估框架。

小孟同学的博客 290

lammps不同晶面建模方法汇总

Lammps lattice命令中的orient关键词可实现晶体的旋转和重定向,下面的命令中,111面的法线方向与y正方向重合,说明111面垂直于y轴。在有些模拟中,需要研究特定面的性质,比如研究110面,默认状态下,110面不是坐标平面,研究起来不方便,需要对模型进行旋转,如下图所示。经过旋转后,110面的法线方向与x轴正方向重合,旋转之后再重新对晶体进行切割,新模型的x面就是110面。需要注意的是,这种方法需要明确指定x、y、z轴的正方向分别对应哪三个面的法线方向,缺一不可。大家好,我是小马老师。

lammps_jiayou的博客 355

移动应用APP开发:WebApp、HybridApp、 NativeApp与原生的交互

前言 随着H5标准的发布,使得移动应用的开发有了更多的选择,出于效率、成本、质量等原因,移动应用不再只是单纯的原生开发。今天就简单总结一下目前的三大主流移动应用开发类型。 一、WebApp、HybridApp、 NativeApp简单介绍 WebApp WebApp是指使用前端语言编写的可以用于多平台的应用,运行在手机或浏览器上,对手机性能要求比较高。 受限于手机的webView,页面普遍存放于服务器。 更新容易,更新无需通知用户,不用手动升级。 开发成本低,维护简单。 体验差,用户留存

中控易动的博客 391

Python 爬虫实战:攻克小红书种草笔记,抓取美妆好物推荐数据

通过本次 Python 爬虫实战,我们成功地从小红书爬取了美妆种草笔记的数据,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分笔记的数据,且未对笔记中的图片和视频内容进行分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多笔记的数据,并深入分析笔记中的多媒体内容、用户行为模式等,为美妆品牌和消费者提供更有价值的数据支持。

u014481728的博客 3268

混合开发篇-原生与H5交互

## 混合开发 DCLOUD实现混合开发的方式,微信公众号的二次开发,微信小程序 ### 现有的NativeAPP、WebAPP、HybridAPP的区别 APP:application应用程序,一般指移动端的应用。 1. NativeAPP: 由Andriod、IOS开发人员开发;使用的语言是:xml+java;xml+(Objective-C/swift); 对网络的依赖性不强(在没有网络的情况下也能使用部分功能);流畅度较高;能调用设备的原生功能; 应用需要下载安装,使用成本高;更新维护

qq_40596488的博客 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

混合开发与移动端--H5混合开发、H5页面的开发布局、开发注意事项、H5与原生(安卓)交互、webpack打包优化解决方案、H5调试工具、webview

H5混合开发 混合开发、原生开发、H5开发的区别: 简述:主流APP:原生APP、H5(webapp)、混合APP,相对应的定制研发即原生开发、H5开发、混合开发 原生APP开发优缺点: 可以访问手机的所有功能,可实现功能最齐全 运行速度快、性能高、用户体验较好 兼容性高 比较快速的使用设备端提供的接口,处理速度上有优势 开发周期长、成本较高,可移植性较差 内容有限制 获得新版本必须要用户重新手动下载更新 WEBAPP开发: 简述:HTML5开发,利用WEB技术进行的APP开.

小白小白从不日别的博客 3143

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IOS ,Android + html5

Android native + html5

sky_fate的专栏 1341

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

H5 App开发技术如何进行选型 ?

目前 按照 APP 开发分类,分为以下三大类原生 APP [ Android Swift Flutter React Native ]WEB APPHybrid App [混合APP ]在找工作的当中,很多岗位 要求 会开发 H5 App ,那到底什么是H5 APP 呢?一开始我也有点疑惑,没接触这块,按自己理解 就是 采用 HTML5 技术开发出的页面应用 跑在移动端当中。 下面引用 阮...

程序员成长指北 477

App开发

1.原生app 1.原生App使用iOS或者Android平台提供的控件和底层api进行开发。 特点:运行速度快,但是效果不明显,没有很好的交互。 2.webApp 1.基于网页的App开发。 3.混合App 使用网页+容器的组合。h5网页可以用来产生比较好看的效果。在应用中相当于嵌套了一个浏览器。是应用可以渲染出浏览器的效果。 表现层(页面) + 渲染层(webView/uiWebView)+api底层。 ...

以笔为刀的博客 2039

uniapp和HTML5区别

uniapp 的性能问题主要集中在 app 端,做 H5 和 VUE 的开发体验是一致的。 一、标签的差异 二、组件的差异 三、JS 的变化 四、主要区别 uniapp 和 h5 主要区别在于 uniapp 不支持 dom 操作(H5 端有 dom 对象)、不支持过滤器,这和微信小程序是一致的。 五、共同点 1、uniapp 和 h5 共同的优点:一端多用,做单一品种比较不错,简单方便,小巧。 2、uniapp 和 h5 共同的缺点:与原生相比性能上目前是不可跨越的鸿沟。 六、APP 应用架构 uni-ap

withkai44的博客 1059

apicloud转uniapp_uni-app,wex5,APPcan,ApiCloud几款国内webapp开发框架的选型对比

框架列表。前言近期,要开一个新的项目,APP类型。最重要的需求就是能够随时调整APP的绝大部分内容,所以,打算使用webapp的方式开发。在这个大前提下,开始了前期技术选型的工作。看了uni-app,wex5,AppCan,Apicloud,下面就对边看下这几个项目的优劣,帮助大家可以参考。生态社区特点对比如下:其技术架构特点对比如下:整理比较中,中间找资料发现了APIcloud,本来以为是个很好...

weixin_35055546的博客 2221

APP中的 H5和原生页面如何分辨、何时使用

一、APP内嵌H5和原生的区别 1、原生的页面运行速度快,比较流畅。 H5页面相对原生的运行性能低,特别是一些动画效果有明显卡顿。 2、H5页面的很多交互都没有原生的好,比如弹层、输入时候的页面滑动 等。H5的效果相对比较low,没有原生的好看,也没有原生默认的动画等效果。 3、原生APP修改页面要重新发布,等待审核(现在iOS的审核速度已经提高到1天到2天)。 H5页面的修改 可以随时上线,不用...

weixin_30770783的博客 763

WebApp与原生App介绍

原生App 在智能手机上允许的App应用程序有NativeApp(基于本地操作系统运行)和WebAPP(基于手机浏览器运行),其中Native App就是原生App的意思,所以原生App开发也就是指基于本地操作系统的App开发服务。如今市面上多数的App软件开发都是使用的原生程序编写的应用程序,也就是说大部分的手机App属于原生App应用软件。 原生App访问和兼容的能力比较好,可以支持在线或者离线消息推送或是进行本地资源访问,以及摄像、拨号、蓝牙、功能的调取。原生App开发有很多的优势,如原生App是

web工程师——小发发 921

sql+go+vue+android

PPT 内容 整理

zyzhan 693

APP 技术该如何 选型 ?

目前 按照 APP 开发分类,分为以下三大类 原生 APP [ Android Swift Flutter React Native ] WEB APP Hybrid App [混合APP ] 在找工作的当中,很多岗位 要求 会开发 H5 App ,那到底什么是H5 APP 呢? ​ 一开始我也有点疑惑,没接触这块,按自己理解 就是 采用 HTML5 技术开发出的页面应用 跑在移动端当中。 ​ 下面引用 阮一峰对 H5 开发解释。 真正理解 H5 开发,需要先搞清楚什么是原生 Ap.

我是程序员海军, 全栈开发 | AI爱好者 | 独立开发。 915

WebAPP与原生APP的交互设计区别

WebAPP和原生APP同为移动端,很少有研究这两项的交互区别,最近公司做了一次从原生APP到WebAPP(HTML5)的移植,故总结一下期间遇到的问题及不同点总结。 从使用场景上,WebApp用户面临比APP用户更严峻的问题: 1、页面跳转更加费力,不稳定感更强 思考点:如何减少跳转(扁平结构、页面布局技巧),增加数据及展示的流畅流程及稳定性(技术) 2、更小的页面空间(

苍天在上 591

WebAPP(H5)与原生APP的交互设计区别

WebAPP和原生APP同为移动端,很少有研究这两项的交互区别,最近公司做了一次从原生APP到WebAPP(HTML5 )的移植,故总结一下期间遇到的问题及不同点总结。 (作者注:本文WAP经指正意为 webAPP ,many thx~) 从使用场景上,WAP用户面临比APP用户更严峻的问题: 1、页面跳转更加费力,不稳定感更强 思考点:如何减少跳转(扁平结构、页面布局技巧),增加

RuiMan的博客 2652
上一篇: fiddler抓取APP数据包
下一篇: Vue-amap 实现获取定位功能
codezha
博客等级 码龄10年 28粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值