赞
踩
小程序内嵌H5是指将一个H5页面嵌入到小程序中的一种方式
小程序内嵌H5可以让用户在小程序中直接浏览和使用H5网页 同时也可以让开发者在小程序中使用H5网页的某些功能。
当原有的H5转相似业务逻辑的小程序时 除了内嵌H5以外 还可以采用多端编译的方案 但是这样做api兼容处理的成本高 当然开发成纯小程序也行 缺点是工作量大 而内嵌H5用到的web-view需要的基础库支持版本覆盖率已达95%以上 所以选择这个方案
在小程序中,H5页面的外观和交互效果与在浏览器中打开该H5页面相同,同时可以结合小程序自身的API和功能,实现更丰富的应用功能。
参考以下场景:
H5页面中包含一些小程序无法实现的功能(如语音识别、图像识别),可以使用H5页面与小程序进行交互来实现这些功能。
在小程序中实现部分功能,但不想使用小程序自带的组件或API,可以借助H5页面来扩展小程序的功能。
H5页面中的内容有公用性或者独立性,并且需要使用小程序的授权功能(如QQ、微信等),可以将H5页面嵌入到小程序中进行授权操作。
H5中有个问卷页 需要用户登录后填写 但是H5本身登录操作比较麻烦 小程序只需要用户授权一次 之后都会执行自动登录的流程(自己去实现) 这样用户一打开小程序就已经是登录状态了 方便执行后续操作 这样可以通过提高登陆率来实现转化率的提高
不难看出 小程序内嵌H5在特定的场景下 确实犹如神兵天降起到了意想不到的效果
说了那么多我们来看看怎么做
首先我们需要在公众平台去配置域名
业务域名中配置的就是小程序以及 H5 和 H5 中引用 iframe 的域名。这里要特别注意的是假如 H5 中有内嵌的 iframe 也要配置进去
还需要找服务端朋友帮忙把校验文件放到业务域名的根目录下
具体的在配置域名时会有教程
其次在小程序中我们需要使用到web-view组件
在这个组件上我们需要做两件事
引入JS-SDK 同样的这也需要在微信公众平台中对JS-SDK安全域名进行配置
具体方法也可以找到 这里贴一个GPT的回答 它很贴心的告诉了我们该方法是用于内嵌的H5
配置好了以后我们就可以放心接入了
判断宿主环境
- <script src="https://res.wx.qq.com/open/js/jweixin-1.5.0.js"></script>
- <script>
- if (typeof wx !== 'undefined' && typeof wx.miniProgram !== 'undefined') {
- // 当前在小程序环境中
- } else {
- // 当前不在小程序环境中
- }
- </script>
其它API
- // javascript
- wx.miniProgram.navigateTo({url: '/path/to/page'})
- wx.miniProgram.postMessage({ data: 'foo' })
- wx.miniProgram.postMessage({ data: {foo: 'bar'} })
- wx.miniProgram.getEnv(function(res) { console.log(res.miniprogram) })
HTTPS支持
除此之外H5页面还必须支持HTTPS协议 否则无法在小程序中加载。
HTTPS可以让数据传输更加安全 也可以起到SEO优化的作用
相反如果内嵌的H5是HTTP协议的话则加载时会提示链接不安全的错误
由于内嵌H5后 对于小程序来说页面展示的内容就变得不可控了
所以就会需要在后台完成相关配置 以及需要满足HPPTS协议等
除此之外 还有一些点需要注意
背景
遇到过一个这样的场景
H5中有两个页面 一个是活动页 另一个是问卷页
活动页会展示活动相关信息并提供报名按钮 点击后跳转到问卷页去填写报名信息
为了提高登陆率和转化率 遂把这两个页面都进行了改造 内置到小程序中
问题
当从小程序直接打开活动页或者直接打开问卷页时 OK 两个页面都正常同步了登录状态
但是如果从打开的活动页点击按钮跳转到报名页
就会显示未登录 弹出登录框 登录后又会回到活动页 一直会重复这个过程
分析
在思考解决方法前 我们先过一下同步登录状态的流程
首先对于小程序来说 登录可以分为2种
微信生态是有cookie的 但是小程序的登录跟这个cookie没有关系 小程序也无法操作cookie
小程序不能直接用cookie作为登录的依据是因为小程序登录的用户可能和微信生态里已经有的cookie的用户不一致
微信可以切换登录用户 但小程序不行
如果切换后没有同步登录状态 那此时的拿到的cookie可能是之前保留的
所以靠cookie作为登录依据是不行的
于是换了一种方法 往内嵌的url上拼接username和usertoken
h5端判断如果是小程序环境 并且url中有这两个参数 才会去执行同步流程
这也就导致了背景中的现象 由于活动页和问卷页都完成了改造 所以都会去解析URL中是否包含username与usertoken
而在问卷页时 由于是活动页配置按钮操作的跳转 并没有拼接参数 所以会弹出登录框提示登陆
解决方法
这时候可以考虑在第一个页面登录成功后记录一个状态
该页面跳转到其它页面时 会首先判断是否同步过登录状态
如果同步过则不用去解析URL判断参数
如果没有同步过 还是去判断URL是否含有对应参数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。