Write By Monkeyfly
以下内容均为原创,如需转载请注明出处。
前提
- 广告位中的图片需要点击跳转至指定的小程序。
- 当前小程序和要跳转到指定的小程序,二者之间已经满足了
都是同一公众号下关联的小程序
的前提。 - 不满足前提,无法在一个小程序内打开另一个小程序。
tip:
只有同一公众号下的关联的小程序之间才可相互跳转。 详情入口(点击查看)
问题再现
1.实现方式:使用 <navigator> 组件
<navigator target="miniProgram" open-type="navigate" app-id="" path="" version="release">
<image src=""></image>
</navigator>
2.错误提示
VM299:2 <navigator/> should have url attribute when using navigateTo, redirectTo or switchTab
意思就是:<navigator/>组件在使用时,涉及到以上3种跳转方式时,必须拥有 url 属性,否则就会出错。
官方文档提供的代码示例如下所示:
<!-- sample.wxml -->
<view class="btn-area">
<navigator url="/page/navigate/navigate?title=navigate" hover-class="navigator-hover">跳转到新页面</navigator>
<navigator url="../../redirect/redirect/redirect?title=redirect" open-type="redirect" hover-class="other-navigator-hover">在当前页打开</navigator>
<navigator url="/page/index/index" open-type="switchTab" hover-class="other-navigator-hover">切换 Tab</navigator>
<navigator target="miniProgram" open-type="navigate" app-id="" path="" extra-data="" version="release">打开绑定的小程序</navigator>
</view>
疑惑:完完全全就是复制官方示例代码写的,居然会报错,奇了怪了。
随后,经过反复确认:绝对不是代码的问题。
然后,就在想:是不是开发工具哪里设置的有问题。
于是,就在微信开发者工具上一顿乱找,最终居然被我发现了问题所在。
如下图所示:(惊不惊喜?意不意外?刺不刺激?)
接下来的操作就简单了,只需要把 调试基础库设置为最新版本
就好了。
微信开发者工具调试基础库的默认版本是比较低的,好像是1.9.96版本
。
设置步骤: 开发者工具右上角的“详情”按钮 → 项目设置 → 调试基础库
【我怎么也没有想到,居然是这个原因导致的错误。至此,问题完美解决。】
疏忽的地方
1.在开始使用组件时,感觉这个版本号与我使用该组件没什么关系,就没有在意 最低版本
这几个字。
2.由于对开发者工具的不熟悉,导致根本就不知道还可以设置调试基础库,以及基础库版本会影响实际的功能和效果
。
3.认为 直接复制粘贴官方提供的示例代码
就可以实现相应功能了,不需要考虑其他的因素。
知识拓展
公众号关联小程序的关联规则:(了解一下)
- 所有公众号都可以关联小程序。
- 一个公众号可关联
10
个同主体的小程序,3
个不同主体的小程序。 - 一个小程序可关联
500
个公众号。 - 公众号一个月可新增关联小程序
13
次,小程序一个月可新增关联500
次。
关联流程:登录公众号后台 —— 小程序 —— 小程序管理 —— 添加 —— 关联小程序
打开小程序最早支持的API:wx.navigateToMiniProgram(OBJECT)
注:此接口即将废弃,请使用 <navigator> 组件来使用此功能。
这就是我为什么选用 <navigator> 组件
来实现此功能。
结束语
1.在开发者工具上调用此API
并不会真实的跳转到指定的小程序,但是开发者工具会校验本次调用跳转是否成功。
2.最后还要注意的一点是:<navigator>
组件中的version
属性。
- 该属性表示
要打开的小程序是什么版本的
。默认值:release(正式版)
。 当 target="miniProgram" 时 version 属性有效。有效值有3种,分别是: develop(开发版),trial(体验版),release(正式版)。
- 仅在当前小程序为
开发版或体验版时
此参数(version)
有效; - 如果当前小程序是正式版,则打开的小程序必定是正式版。即参数
(version)
设置无效。