打开小程序设置页(wx.openSetting)接口调整

开发者可以通过 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 以下的环境中不受此策略影响。

最后一次编辑于  09-12  (未经腾讯允许,不得转载)
收藏 0评论 56
  • ##

    你们约束的不应该是开发者,而是恶意程序。

    我觉得你们就是懒 懒得审核那么多,干脆直接让开发者无从选择了。 就是所谓的不处理事请,只封住说事人的嘴

    赞同 18没有帮助
    评论 2
    复制
    10-07
    • 敏

      开发者滥用此接口,使用户在无任何操作时,不断地强行跳转至设置页,导致用户无法正常使用甚至无法退出小程序。这个本质上就是恶意程序,如果开发者滥用的不是wx.openSetting,而是wx.showModal,不断地强行弹出模态对话框,那么是不是也要对wx.showModal进行限制呢?

      赞同 15没有帮助
      回复
      复制
      10-22
    • johonjohon

      按这个推理下去,嗯,以后是不是很多的接口调用,全是要靠一颗按钮来实现。。。

      赞同 4没有帮助
      回复
      复制
      10-25
    评论
  • 。

    也是服了,这样的改动既不利于开发者开发,用户体验又不好,就不能全都改成获取用户信息按钮一样对应每一个授权吗?????就算你 bindtap 调用showModal回调然后调用openSetting,OK是可以 ,但是加多一个saveImage接口,saveImage.then=>showModal.then=>openSetting,这样就不行了??????什么操作????  我求你们别改了好不好???或者我求求你们把授权都改成和获取用户信息的弹框一样,行不????????

    赞同 12没有帮助
    评论 0
    复制
    10-07
  • 2727

    我就想说,多此俩举。


    我不管你怎么设计的。我就问你,这样的东西用户用起来爽不爽。


    你以为不让直接跳转到设置页面,就完事大吉了????????


    赞同 4没有帮助
    评论 0
    复制
    09-17
  • 张亚楠张亚楠

    wx.showModal()的确认按钮可以调用wx.openSetting()吗,类似这样的


    赞同 4没有帮助
    评论 12
    复制
    09-12
    • 尚

      已经到这一步了,干脆连弹窗也自定义了得了😆

      赞同 10没有帮助
      回复
      复制
      09-12
    • 刘文凯刘文凯

      官方出来说一下撒

      赞同 2没有帮助
      回复
      复制
      09-12
    • 黄思程黄思程

      可以,只要showModal调用是在bindtap里

      赞同 2没有帮助
      回复
      复制
      09-12
    • 展示更多
    评论
  • YCJYCJ

    云服务不错

    赞同 4没有帮助
    评论 0
    复制
    09-12
  • 网点网点

    先别说文档整的怎么样,装B的境界还是可以肯定的。

    赞同 3没有帮助
    评论 0
    复制
    09-12
  • 王小超王小超

    官方到处挖坑,码农到处填坑;心累了

    赞同 2没有帮助
    评论 0
    复制
    11-02
  • 请叫我大伯请叫我大伯

    我在点击事件里 打开设置,授权位置信息后,返回界面,在 getSetting的success的回调方法里,调起getLocation,还是获取不到数据,但是刷新界面就可以获取到,什么情况??

    赞同 1没有帮助
    评论 2
    复制
    11-28
    • 卡西卡🐢卡西卡🐢

      我也遇到同样的问题,你有解决么?

      赞同 1没有帮助
      回复
      复制
      11-29
    • 异想天不开异想天不开

      我也遇到了相同的情况,而且我还在onShow里面判断是否授权,如果授权调getLocation,页面还是没反应,刷新才行

      赞同 0没有帮助
      回复
      复制
      11:24
    评论
  • 陈锐陈锐

    貌似行不通

    赞同 1没有帮助
    评论 12
    复制
    09-13
    • johonjohon

      我测试了确实也是不行,提示

      VM255:1 openSetting:fail can only be invoked by user TAP gesture.


      赞同 0没有帮助
      回复
      复制
      09-13
    • 陈锐陈锐
      回复johon

      和官方说的一致   点击触发(bindtap)才能调用wx.openSetting

      赞同 0没有帮助
      回复
      复制
      09-13
    • johonjohon
      回复陈锐

      我测试的是这种场景不行


      赞同 0没有帮助
      回复
      复制
      09-13
    • 展示更多
    评论
  • AieyLisyhAieyLisyh

    openSetting接口的官方指南根本不是小游戏的,但是又说针对的是小程序、小游戏  小游戏到底改不改?本来授权按钮就够了,如果基础库有授权按钮就不需要opensetting, 基础库老的不可能有这个接口

    赞同 1没有帮助
    评论 0
    复制
    09-12