weixin_43356655 2023-04-19 19:44 采纳率: 83.3%
浏览 31

小程序每次都会弹出订阅消息推送

小程序wx.requestSubscribeMessage用户勾选了‘总是保持以上选择',就不会再弹出了,是有效果的。但是退出程序后不久再进入小程序,还是会弹出,请问这个该怎么解决?


  //订阅请求
  getMessage() {
    wx.requestSubscribeMessage({
      tmplIds: ['IU5vxEctjDs8UDmeFHSRNKSOX1QSczzI10dls_pz3Jc', '8fESIg7ASWnnFv8hMMeZf5GecfNWpI4DZ7jF81M3fxo'],
    })
  },

img

  • 写回答

1条回答 默认 最新

  • 守时间的孤岛 2023-04-20 09:55
    关注

    回答引用chatgpt:
    当用户勾选了“总是保持以上选择”后,小程序将获得用户授权,并且再次请求该权限时不再弹出授权窗口。但是,当用户退出小程序后,微信会自动清除所有的授权状态,包括“总是保持以上选择”的状态。

    因此,用户下一次进入小程序时,仍然需要重新授权。

    要解决这个问题,可以在小程序启动时检查用户是否已经授权了所需的订阅消息权限。如果用户已经授权,就不需要再次请求授权;如果用户没有授权,则需要弹出授权窗口,让用户进行授权。

    可以使用 wx.getSetting 方法来获取用户的授权状态,代码示例如下:

    
    wx.getSetting({
      withSubscriptions: true,
      success(res) {
        // 判断用户是否授权了订阅消息权限
        if (res.subscriptionsSetting && res.subscriptionsSetting.itemSettings) {
          const itemSettings = res.subscriptionsSetting.itemSettings
          if (itemSettings[TEMPLATE_ID].subscribe == 'accept') {
            // 用户已经授权,不需要再次请求授权
            return
          }
        }
        
        // 用户没有授权,需要请求授权
        wx.requestSubscribeMessage({
          tmplIds: [TEMPLATE_ID],
          success(res) {
            // 处理用户授权的结果
          }
        })
      }
    })
    
    

    其中,withSubscriptions 参数需要设置为 true,以获取用户的订阅消息权限状态。TEMPLATE_ID 是需要订阅的消息模板 ID。在成功获取到用户的订阅消息权限状态后,可以根据用户的授权状态决定是否请求授权。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月19日