前言:
首先说明一点,虽然绕过官方审核,是不推荐的行为,但是实际的项目开发中,难免会有一些需求或功能在发布上线时,会被官方拒绝。
例如类目不对的情况,由于企业性质或其他原因,无法申请相关类目要求的资质;或者申请资质办理难度大、所需时间漫长,无法在上线节点前申请完成,但是实际业务中确实有此需求。
这就需要在上线时先合理绕过官方审核,以期能顺利发布成功,不耽误业务使用。
一、背景和问题描述
很多开发者在开发项目的时候发现,上线微信小程序最难的不是开发阶段,而是微信审核机制。因为微信为了自身平台规避法律风险,开发的很多功能需要提供相关的证件或者资质,就像前面所说,相关的资质办理难度大,或者一般的公司根本办不下来。那么绕过审核就是一个很重要的上线技巧。
我们之前开发的一个微信小程序,涉及一些视频,发布审核时,被官方认定需要补充"教育服务-在线视频课程类目"。如下图所示:
但是我们项目中的视频内容是关于"用车知识的介绍和使用须知",并不属于教育类视频或直播课程,而且我们也拥有"教育服务 > 在线教育"的服务类目,可能跟"在线视频课程"类目不一样。
可是实际业务中确实需要此功能,那么该如何顺利上线呢?
二、解决思路
因为需要此功能,那么:
- 在
体验版环境
下必须能正常展示,才能让测试同事正常测试。 - 在提交审核时,即在
开发版环境
下,此模块需要隐藏,才能绕过官方审核,使审核通过。 - 在发布审核成功后,即在
正式版环境
下,此模块需正常展示,可供用户使用。
三、解决方案
我这边实现了两种解决方法,供大家参考:
方案一
核心: 使用
wx.getAccountInfoSync()
功能描述: 获取当前账号信息。线上小程序版本号仅支持在正式版小程序中获取,开发版和体验版中无法获取。
可参考微信小程序官方文档: 获取当前账号信息:Object wx.getAccountInfoSync()
具体使用方法如下:
- 在小程序项目的
app.js
文件中的onLaunch
中获取小程序账号信息:
js
onLaunch: function () {
//启动时动态获取小程序的 appid
const accountinfo = wx.getAccountInfoSync()
wx.setStorageSync('miniProgram', accountinfo.miniProgram)
},
- 然后在需要做判断的模块的页面获取
miniProgram
,我这边是在展示视频模块入口页面获取:
- 在
js
文件中获取账号信息的值:
js
data: {
miniProgram: wx.getStorageSync('miniProgram'),
},
- 在
html
文件中进行判断:
注:我是使用
miniProgram.version
的值进行判断的。因为此值是线上小程序版本号 ,只有在线上环境中 才会有值,所以只会在线上环境 中展示,提交审核的开发环境 中看不到此模块。
而在体验版环境 下,我不会加
wx:if="{{miniProgram.version}}"
这个代码,只有在提交审核时加上。缺点就是需要改动代码,但是能完美避开审核,使审核顺利通过。
方案二
核心: 使用小程序视频插件。
优点: 完美继承完美继承小程序原生<video>
的所有特性和事件。不用改代码。
后期我们开发了一个小程序的视频插件,在展示视频的页面中,使用视频插件
代替<video></video>
。这样也能完美通过审核。
这个小程序视频插件作用是,专门为没有视频播放资质的小程序提供视频播放功能,解决视频播放资质问题。
思路来源于官方解答:
涉小程序插件功能介绍: developers.weixin.qq.com/miniprogram...
涉小程序类目资质、适用范围参考:developers.weixin.qq.com/miniprogram...
以上,希望对大家有帮助!