开发者可以通过 wx.openSetting
接口来打开小程序设置界面并返回用户的设置结果。在原来的 wx.openSetting
接口中,我们允许开发者直接调用此接口,但目前我们发现有不少开发者滥用此接口,使用户在无任何操作时,不断地强行跳转至设置页,导致用户无法正常使用甚至无法退出小程序。
为保证用户获得更顺畅的小程序使用体验,避免此类滥用情况,我们对该接口进行了调整。
调整后“打开小程序设置页”将支持以下两种实现方式:
方法1:使用
button
组件来使用此功能,示例代码如下:<button open-type="openSetting" bindopensetting="callback">打开设置页</button>
方法2:由点击行为触发
wx.openSetting
接口的调用,示例代码如下:<button bindtap="openSetting">打开设置页</button> openSetting() { wx.openSetting()}
方法2已在最新版开发者工具中支持(基础库切到2.2.4及以上),开发者可以尽早适配。
此次调整会对直接调用wx.openSetting接口造成影响
原无需用户点击即可直接调用wx.openSetting接口的实现方式将不再支持,即将废弃的错误使用方式示例如下:
onShow() { wx.openSetting()}
10月10日起新提交发布的版本将会受到此调整的影响。
需要各位开发者注意,10月10日起新提交发布的小程序版本将不再支持无需用户点击即可直接调用的“打开小程序设置页”接口,请开发者尽早适配。
调整策略在基础库 2.3.0 及以上版本生效,该基础库版本对应微信客户端6.7.2版本。另外,考虑到兼容性等问题,在基础库版本 2.3.0 以下的环境中不受此策略影响。
貌似行不通
我测试了确实也是不行,提示
VM255:1 openSetting:fail can only be invoked by user TAP gesture.
和官方说的一致 点击触发(bindtap)才能调用wx.openSetting
我测试的是这种场景不行
那就老老实实写个按钮点击吧,统一写个组件继续弹
测试通过bindtap调用showModal showModal回调中再调用openSetting是可以的
openSetting接口的官方指南根本不是小游戏的,但是又说针对的是小程序、小游戏 小游戏到底改不改?本来授权按钮就够了,如果基础库有授权按钮就不需要opensetting, 基础库老的不可能有这个接口
真是脑残的设计
savehb:function(){ // 这里是 TAP
var that = this;
if (that.data.imageurl) {
wx.saveImageToPhotosAlbum({
filePath: that.data.imageurl,
success(res) {
app.showmsg('保存成功')
},
fail(res) {
wx.getSetting({
success(ckauth) {
if (!ckauth.authSetting["scope.writePhotosAlbum"]){
wx.showModal({
title: '',
content: '需要您的授权才能保存到相册。是否开启?',
success:function(ret){
if (ret.confirm) {
wx.openSetting({
fail:function(e){
console.log(e); // openSetting:fail can only be invoked by user TAP gesture.
}
});
}
}
})
}
多一层 就 失效!
哪有先不检查 就 showModal 的。 这些原生控件 都成 没 多大用处了
就多加一个authorize的判断回调都不行,我想问一下官方, 用户第一次授权我不弹窗授权窗口我直接给用户弹设置窗口??????????
官方请出来给一个推荐的解决方案ok?这样把自己解决不了的部分开发者滥用接口的问题推给其它开发者真的是很不负责
switch组件 都不可以,非得是 button?
我想问下 使用
wx.showModal
点确定 跳到
openSetting
这算是点击么
亲测,算点击
在点击中调用showModal,showModal的回调再调用openSetting就算
是吗,怎么我测试的不是tap。。。
测试了你这个说法不通,还是提示
VM255:1 openSetting:fail can only be invoked by user TAP gesture.
同样报错,官方出个demo
云服务nice呀
建议能不能把所有的权限打开啊,接口我们可以随便调用啊,你们审核严格点不行吗?发现我们频繁恶意调用你们不通过或者封号都行啊,写个小程序因为你们官方的原因越来越麻烦,让用户操作变得越来越多,体验好吗?
关键wx.getSetting是异步的,无法做到先前拒绝就打开设置否则就授权,而且也无法实时知道用户什么时候取消授权,