小程序一次性订阅消息实现和注意事项(个人笔记)

export const subscription = (tmplIds) => {
    return new Promise((resolve, reject) => {
        wx.getSetting({
            withSubscriptions: true,
            success(res) {
                console.log("订阅消息", res)
                if(!res.subscriptionsSetting.mainSwitch) { // 关闭订阅消息主按钮
                    return wx.showModal({
                        title: '提示',
                        content: '您已关闭订阅消息通知,请点击“确认”按钮在设置中打开订阅通知。',
                        success: function (res) {
                            if (res.confirm) {
                                wx.openSetting({
                                    success(res) {
                                    }
                                });
                            }
                        },
                    });
                } else { // 开放订阅消息主按钮
                    wx.requestSubscribeMessage({
                        tmplIds, // 需要订阅的消息模板的id的集合,一次调用最多可订阅3条消息
                        success (res) { 
                            console.log("授权", res)
                            resolve()
                        },
                        fail() {
                            resolve()
                        }
                    })
                }
            }
        })
    })
}

注意事项:

1.用户点击确定或者取消,但不勾选‘总是保持以上选择,不再询问’,下一次授权会再弹窗(用户授权允许一次,才会收到一次消息);
2.用户勾选了‘总是保持以上选择,不再询问’后不会再弹窗(依然走授权,只是不弹窗,保持之前的选择);
3.用户勾选了‘总是保持以上选择,不再询问’后才能获取到每一项的授权状态;
4.但是勾选了‘总是保持以上选择,不再询问’后,就不会再次弹出了,res.subscriptionsSetting.itemSettings会返回之前的授权结果;
5.所以暂时不能实现在多个授权中每次只弹出未授权的项;
6.一次调用最多可订阅3条消息,超过3条不会弹窗;
7.注意检查模板id对不对,否则也不会弹窗;
8.需要用户点击事件触发,所以需要写在绑定的点击事件里面,写在其他封装好的方法里面会报错。

如有理解错误的地方,感谢指正!

更详细的步骤,可以参考该博文:https://developers.weixin.qq.com/community/develop/article/doc/000686f1808000a566fcccefb56813

你可能感兴趣的:(小程序一次性订阅消息实现和注意事项(个人笔记))