您的当前位置:首页正文

微信小程序使用wx.chooseMedia提示存在涉及违反国家法律法规和政策,审核不通过的解决方案

2024-11-10 来源:个人技术集锦

问题场景:

在微信小游戏/小程序使用wx.chooseMedia接口,允许用户使用摄像头或本地相册的图片,审核不通过,理由是存在涉及违反国家法律法规和政策,建议将游戏角色或场景中,包括但不限于国家政治、领导、经济活动,以及国家领导人等内容移除。

问题原因

使用本地相册的图片没有做图片校验,也就是用户能够选一些国家领导人的照片使用,哪怕不上传云端在本地使用,在当前政策下也是不允许的(…)

解决方案

最简单粗暴的解决方案:

1.调用wx.chooseMedia时把[‘album’, ‘camera’]里的’album’读取相册功能去掉,只留’camera’,审核就过了,缺点是用户只能拍照不能用相册里的图

有后台服务端的解决方案:

1.官方标准方案:把图片上传到服务端,使用官方接口media_check_async进行校验,校验成功后才能使用该图片。需要注意的是media_check_async是异步方法也就是不会立刻返回结果(“异步检测结果在 30 分钟内会推送到你的消息接收服务器”),实时性比较高的项目不能用这个接口。还有一个同步校验的方法,是老版本的最新官方文档找不到了但还能用,有兴趣可以自己找下,这个同步方法在图片大小和调用频率上都有限制,使用的话需要对上传图片做压缩。

2.投机取巧方案:新建接口(是否为正式环境),返回true或false,在小程序加载时获取,如果为true,则开启[‘album’, ‘camera’],如果为false则只留[‘camera’]。提交审核后让接口返回false,等审核通过了再改成true,优点是灵活切换是否开启本地相册,审核的时候关掉就行了。缺点是需要对代码做混淆,以及审核期间用户无法使用相册功能。
(后续编辑:此方案有优化,接口不返回bool了,改成返回string,前端代码改成 if(接口返回===‘a’){只开启摄像头}else{开启摄像头和相册} 第一次提交审核的时候让接口返回a,审核通过。然后下一次提审的时候顺便把等于’a’改成等于’b’,让接口返回b,这样线上版本的逻辑就变成了b等于a,不成立则保留了摄像头和相册,审核版本b等于b只开启摄像头。第三次提审的时候顺便把等于’b’再改成等于‘c’并让接口返回c, 这样审核版本永远相等只开启摄像头,线上版本因为是上一个版本条件是前一位所以永远不成立就一直开启全部,这方案能保证审核期间用户也一直能使用相册)

没有后台服务端的解决方案:

1.投机取巧方案:如果小程序小游戏只是本地用,没有任何后端交互,那为了过审特意搭个后端属实没必要,有个方案就是大家都知道非首次提交的审核时间一般都在3天以内(首次提交可能3-6天。信用分低的话时间更长),所以代码可以这样写:如果我打算1月1号提审,就在程序里判断 if(当前时间<1月4号){wx.chooseMedia只开启camera} else {wx.chooseMedia同时开启camera和album}。该方案优点是无需搭建后端,缺点也很明显需要做代码混淆,1月4号前用户无法使用相册功能,审核时间如果过长也会导致不通过。但相比搭建个后端,这点困难算啥…

还有其他更好的方案欢迎留言(既然是投机取巧的方案,官方肯定是抓到就ban的,自己用用就好别宣传到开放社区去…本博客对后果不负责,推荐大家还是使用官方的解决方案)

显示全文