文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

小程序内嵌H5那些事儿

2023-08-31 20:13

关注

什么是小程序内嵌H5

小程序内嵌H5是指将一个H5页面嵌入到小程序中的一种方式

小程序内嵌H5可以让用户在小程序中直接浏览和使用H5网页 同时也可以让开发者在小程序中使用H5网页的某些功能。

当原有的H5转相似业务逻辑的小程序时 除了内嵌H5以外 还可以采用多端编译的方案 但是这样做api兼容处理的成本高 当然开发成纯小程序也行 缺点是工作量大 而内嵌H5用到的web-view需要的基础库支持版本覆盖率已达95%以上 所以选择这个方案

为什么需要内嵌H5

在小程序中,H5页面的外观和交互效果与在浏览器中打开该H5页面相同,同时可以结合小程序自身的API和功能,实现更丰富的应用功能。

参考以下场景:

不难看出 小程序内嵌H5在特定的场景下 确实犹如神兵天降起到了意想不到的效果

内嵌H5需要怎么做

说了那么多我们来看看怎么做

域名配置

首先我们需要在公众平台去配置域名

业务域名中配置的就是小程序以及 H5 和 H5 中引用 iframe 的域名。这里要特别注意的是假如 H5 中有内嵌的 iframe 也要配置进去

还需要找服务端朋友帮忙把校验文件放到业务域名的根目录下

具体的在配置域名时会有教程

小程序端的处理

其次在小程序中我们需要使用到web-view组件 

在这个组件上我们需要做两件事

H5的处理

引入JS-SDK 同样的这也需要在微信公众平台中对JS-SDK安全域名进行配置

具体方法也可以找到 这里贴一个GPT的回答 它很贴心的告诉了我们该方法是用于内嵌的H5

配置好了以后我们就可以放心接入了 

判断宿主环境

其它API

// javascriptwx.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的注意事项

由于内嵌H5后 对于小程序来说页面展示的内容就变得不可控了

所以就会需要在后台完成相关配置 以及需要满足HPPTS协议等

除此之外 还有一些点需要注意

一个实际场景的分享

背景

遇到过一个这样的场景 

H5中有两个页面 一个是活动页 另一个是问卷页

活动页会展示活动相关信息并提供报名按钮 点击后跳转到问卷页去填写报名信息

为了提高登陆率和转化率 遂把这两个页面都进行了改造 内置到小程序中

问题 

当从小程序直接打开活动页或者直接打开问卷页时 OK 两个页面都正常同步了登录状态

但是如果从打开的活动页点击按钮跳转到报名页

就会显示未登录 弹出登录框 登录后又会回到活动页 一直会重复这个过程

分析

在思考解决方法前 我们先过一下同步登录状态的流程

首先对于小程序来说 登录可以分为2种

微信生态是有cookie的 但是小程序的登录跟这个cookie没有关系 小程序也无法操作cookie

小程序不能直接用cookie作为登录的依据是因为小程序登录的用户可能和微信生态里已经有的cookie的用户不一致

微信可以切换登录用户 但小程序不行

如果切换后没有同步登录状态 那此时的拿到的cookie可能是之前保留的

所以靠cookie作为登录依据是不行的

于是换了一种方法 往内嵌的url上拼接username和usertoken

h5端判断如果是小程序环境 并且url中有这两个参数 才会去执行同步流程

这也就导致了背景中的现象 由于活动页和问卷页都完成了改造 所以都会去解析URL中是否包含username与usertoken

而在问卷页时 由于是活动页配置按钮操作的跳转 并没有拼接参数 所以会弹出登录框提示登陆

解决方法

这时候可以考虑在第一个页面登录成功后记录一个状态

该页面跳转到其它页面时 会首先判断是否同步过登录状态

如果同步过则不用去解析URL判断参数  

如果没有同步过 还是去判断URL是否含有对应参数

来源地址:https://blog.csdn.net/Nasuke_D/article/details/130914451

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯