收藏
回答

小程序订阅消息点击拒绝后,如何再次开启?

点击拒绝后在设置中选择接收,还是收不到消息

回答关注问题邀请回答
收藏

5 个回答

  • 零²⁰²⁵
    零²⁰²⁵
    2023-09-22

    用户在设置中选择接受,这个时候只是代表用户允许你给他订阅消息(并且不会再弹出订阅弹窗),用户还是需要在小程序中的各个入口触发静默订阅的逻辑获取发送消息的次数,获取1次就能发送1条消息给到用户

    2023-09-22
    有用 1
    回复 3
    • Mandy
      Mandy
      2024-02-18
      触发静默订阅的逻辑,能具体说一下步骤吗?
      2024-02-18
      回复
    • 零²⁰²⁵
      零²⁰²⁵
      2024-02-18回复Mandy
      还是一样调用 wx.requestSubscribeMessage,因为用户已经保持不再询问,所以会直接走 success 回调,并且获得向用户下发一条订阅消息的次数
      2024-02-18
      回复
    • 。
      2024-12-11
      只要是点击拒绝过后,弹窗就永远都不会被唤起了是吧?只能从去设置里开启,能接收到消息,但是不会再弹窗让用户操作了,是这个意思吗?
      2024-12-11
      回复
  • wue
    wue
    2024-12-26
    我用的Taro,基本上一样,下面代码就是让大家看看流程
    const test = () => {
        console.log('test');
        Taro.getSetting({ // getSetting方法用来获取小程序向用户请求过的权限
          withSubscriptions: true, // 这个字段为true时,用来获取用户订阅消息的订阅状态
          success(res) {
            console.log('getSetting', res);
            if (res.subscriptionsSetting.mainSwitch) {
              const moIdState = res.subscriptionsSetting?.itemSettings?.['消息id']; // 用户同意的消息模板id
              if (moIdState === 'accept') {
                // 同意了消息推送
              } else if (moIdState === 'reject') {
                Taro.showModal({
                  title: '提示',
                  content: '您已拒绝接受订阅消息,如需订阅消息,请到小程序设置中开启',
                  showCancel: true,
                  success(res) {
                    if (res.confirm) {
                      Taro.openSetting({
                        withSubscriptions: true,
                        success(res) {
                          console.log('openSetting', res);
                        },
                        fail(err) {
                          console.log('err', err);
                        }
                      })
                    }
                  }
                });
              }
            } else {
              Taro.showModal({
                title: '提示',
                content: '快点给我权限',
                showCancel: true,
                success(res) {
                  if (res.confirm) {
                    Taro.openSetting({
                      withSubscriptions: true,
                      success(res) {
                        console.log('openSetting', res);
                      },
                      fail(err) {
                        console.log('err', err);
                      }
                    })
                  }
                }
              });
            }
            // 我们需要判断的是res.subscriptionsSetting.itemSettings这个字段
            // 假设你的模板id为"abcd",itemSettings里,如果没有名为abcd的属性,表明用户还未订阅过消息
            // 如果有名为adcd的属性,且属性值为reject,表明用户拒绝订阅该消息
            // 如果有名为abcd的属性,且属性值为accept,表明用户已接受该订阅消息
            console.log(res.subscriptionsSetting.itemSettings)
          }
        })
     
        Taro.requestSubscribeMessage({
          tmplIds: ['消息id',], // 模板id列表
          success(res) {
            console.log('res1', res);
          },
          fail(err) {
            console.log('err1', err);
          }
        });
      }
    
    2024-12-26
    有用
    回复 1
    • wue
      wue
      2024-12-26
      微信小程序用的Trao直接换成wx
      2024-12-26
      回复
  • 没了
    没了
    2024-02-28

    怎么能在用户前端处理一下不,怎么搞得又要动代码啊,都半年过去,官方不出来解决一下嘛?

    2024-02-28
    有用
    回复
  • Mandy
    Mandy
    2024-02-18

    触发静默订阅的逻辑,能具体说一下步骤吗?

    2024-02-18
    有用
    回复 1
    • 养乐多
      养乐多
      2024-09-11
      点击你写的订阅事件就好了
      2024-09-11
      回复
  • Backy
    Backy
    2023-09-22

    调出用户的设置,用户手动打开


    2023-09-22
    有用
    回复
登录 后发表内容