收藏
回答

通过wx.showModal调用wx.openSetting的问题,不知道是bug还是官方的本意?

以 Promise 风格调用wx.showModal时,无法调用wx.openSetting(),如下所示:
           wx.showModal({
        cancelColor'cancelColor',
        title'位置授权',
        content'小程序获取位置后,可提供更好的服务',
        confirmText'去授权',
        confirmColor'green',
      }).then(res => {
        if (res.confirm) {
          console.log('用户点击了“去设置”', res)
          wx.openSetting()
        } else if (res.cancel) {
          console.log('用户点击了“取消”', err)
        }
      })
但是如果回调函数的方式调用wx.showModal时,就可以调用wx.openSetting(),如下所示:
      wx.showModal({
        cancelColor'cancelColor',
        title'位置授权',
        content'小程序获取位置后,可提供更好的服务',
        confirmText'去授权',
        confirmColor'green',
        success(res) {
          if (res.confirm) {
            wx.openSetting()
          } else if (res.cancel) {
            console.log('用户点击了“取消”', err)
          }
        }
      })
回答关注问题邀请回答
收藏

4 个回答

  • 李林
    李林
    2023-06-28

    调整后“打开小程序设置页”将支持以下两种实现方式:

    • 方法1:使用 button 组件来使用此功能,示例代码如下:
    <button open-type="openSetting" bindopensetting="callback">打开设置页</button>
    
    • 方法2:由点击行为触发wx.openSetting接口的调用,示例代码如下:
    <button bindtap="openSetting">打开设置页</button>  openSetting() {  wx.openSetting()}
    
    • 方法2已在最新版开发者工具中支持(基础库切到2.2.4及以上),开发者可以尽早适配。


    ---直接在js里面调用wx.openSetting() 开发者工具和部分安卓可以 ios不起作用

    2023-06-28
    有用
    回复
  • LauHing[666]
    LauHing[666]
    2022-10-18

    建议自己封装个promise,就没问题了

    2022-10-18
    有用
    回复
  • AAA
    AAA
    2022-07-13

    我今天也遇到了同样的问题,不能以promise风格调用

    2022-07-13
    有用
    回复
  • Frank
    Frank
    2022-07-04

    基础库版本对吗

    2022-07-04
    有用
    回复 12
    查看更多(7)
登录 后发表内容