HTML5同时支持多端sdk怎么实现,原理及方法是什么
Admin 2022-06-28 群英技术资讯 335 次浏览
在实际项目中,我们通常会需要做一些跨多平台的页面。比如说一个活动页面,需要在微信小程序里展示,也需要在自家公司的app里面展示,还需要在支付宝等平台里面展示。这时候一个h5就是很符合你的需要了。如果这个时候需求再复杂一些,比如说在这个活动页面需要调些扫码功能,或者需要调起支付功能,等原生方法调用的需求,那么这个时候你需要一个中间件,来处理不同端的原生方法。
原理很简单,我们在抽象出来一个类,在这类里面,我们将需要用到原生的方法进行实现,其他终端对这个类进行继承并重写所有的方法。
偷懒的话,可以不要pc调试类,直接在父类实现pc调试类里的所有方法。
实现完了,接下来就是调用了,如果在每个页面都判断终端是哪端就太麻烦了,并且也没有必要把每端的中间件代码都加载进来(可以使用require进行异步加载)。在页面加载的过程中,根据判断创建对应终端的中间件对象addon,并将这个中间件对象挂载到window上面,在使用时候就可以直接使用window.addon.scan()
微信、支付宝都有其对应的判断方法,但自家app的判断, 需要原生开发在userAgent里面添加标识(这个不复杂,原生都知道怎么加,不知道的请问度娘)
另外ios webview不再支持同步方法,建议所有的方法采用异步调用方式, 参考示例。
下面上一段我的判断各端的代码
class Addon { constructor () { let ua = window.navigator.userAgent.toLowerCase() if (/MPBank/.test(window.navigator.userAgent)) { // 招商行小程序 } else if (ua.match(/MicroMessenger/i) == 'micromessenger') { // 大部分手机可采用此判断,是否是小程序,但有小部分华为等手机因为加载慢,这里会出现误判 if (window.__wxjs_environment === 'miniprogram' || ua.match(/miniprogram/i) == 'miniprogram') { } else { } } else if (/AlipayClient/.test(window.navigator.userAgent)) { // 此处用ua和miniprogram判断,先查看兼容性,使用my.getEnv为异步,不适合此处 if (ua.match(/miniprogram/i) == 'miniprogram' || ua.match(/webview/i) == 'webview') { // 支付宝小程序 } else { // 支付宝 } } else if (/xxxx-app/.test(window.navigator.userAgent)) { // app } else { // 其他处理(web和第三方渠道进入) 兜底 } } export let addon = new Addon()
下面是一个简单的方法示例
ParentAddon.js
export default class ParentAddon { scan (data) { data.success('xxx') } }
IosAppAddon.js
export default class IosAppAddon extends ParentAddon { scan (data) { window.scanCallback = data.success window.webkit.messageHandlers.scan.postMessage({ callBack: 'scanCallback' }) } }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
使用CSS实现播放声音有几种方法?我们知道CSS的功能是很强大的,改变网页样式、颜色、布局,实现动画等等,今天我们来了解用CSS实现播放声音的技巧,感兴趣的朋友就继续往下看吧。
这篇文章主要介绍了基于HTML代码实现图片碎片化加载功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要介绍了CCS中的margin:top塌陷问题,本文通过实例截图给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
CSS进阶内容—浮动和定位详解我们在学习了CSS的基本知识和盒子之后,就该了解一下网页的整体构成了。CSS的三种布局流派网页布局的本质就是用CSS控制盒子的摆放来形成页面CSS提供了三种流派来控制盒子:普通流...
前段时间在开发中,遇到需要给背景层加颜色遮罩的项目,现在特定总结一下给背景图层加颜色遮罩的方法,感兴趣的朋友跟随小编一起看看吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008