feat: 完成任务添加订阅
This commit is contained in:
+26
-17
@@ -1,38 +1,47 @@
|
||||
/**
|
||||
* Request WeChat Mini Program Subscription Message
|
||||
* Template ID: R7fh3NDpuV8DYqI83HpEQvC8mLJy5xMWFl1qeGN9JIo
|
||||
* Template ID: iG5GYMPQAgKxIE9zZNOgKS6tCURhM9p9AC8iZ3Uj3uA
|
||||
*/
|
||||
const TEMPLATE_ID = 'R7fh3NDpuV8DYqI83HpEQvC8mLJy5xMWFl1qeGN9JIo';
|
||||
const DEFAULT_TEMPLATE_ID = 'iG5GYMPQAgKxIE9zZNOgKS6tCURhM9p9AC8iZ3Uj3uA';
|
||||
|
||||
export const requestSubscription = () => {
|
||||
export const requestSubscription = (tmplIds = [DEFAULT_TEMPLATE_ID], silent = false) => {
|
||||
return new Promise((resolve) => {
|
||||
// Check if subscription capability is available (basic check)
|
||||
if (!wx.requestSubscribeMessage) {
|
||||
console.warn('Current version does not support subscribe message');
|
||||
if (!silent) console.warn('Current version does not support subscribe message');
|
||||
resolve({ success: false, errMsg: 'Not supported' });
|
||||
return;
|
||||
}
|
||||
|
||||
wx.requestSubscribeMessage({
|
||||
tmplIds: [TEMPLATE_ID],
|
||||
tmplIds: tmplIds,
|
||||
success(res) {
|
||||
if (res[TEMPLATE_ID] === 'accept') {
|
||||
|
||||
resolve({ success: true, status: 'accept' });
|
||||
} else {
|
||||
|
||||
resolve({ success: false, status: res[TEMPLATE_ID] });
|
||||
}
|
||||
// If any of the requested IDs are accepted
|
||||
const isAccepted = tmplIds.some(id => res[id] === 'accept');
|
||||
resolve({ success: isAccepted, res });
|
||||
},
|
||||
fail(err) {
|
||||
console.error('Subscription failed', err);
|
||||
resolve({ success: false, errMsg: err.errMsg });
|
||||
if (!silent) console.error('Subscription failed', err);
|
||||
|
||||
// 20004: User closed main switch in settings
|
||||
if (err.errCode === 20004 && !silent) {
|
||||
wx.showModal({
|
||||
title: '提示',
|
||||
content: '请在设置中开启订阅消息通知',
|
||||
confirmText: '去开启',
|
||||
success: (modalRes) => {
|
||||
if (modalRes.confirm) {
|
||||
wx.openSetting();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
resolve({ success: false, error: err });
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
export const checkSubscriptionSettings = () => {
|
||||
export const checkSubscriptionSettings = (tmplId = DEFAULT_TEMPLATE_ID) => {
|
||||
return new Promise((resolve) => {
|
||||
if (!wx.getSetting) {
|
||||
resolve(undefined);
|
||||
@@ -43,7 +52,7 @@ export const checkSubscriptionSettings = () => {
|
||||
withSubscriptions: true,
|
||||
success(res) {
|
||||
const itemSettings = (res.subscriptionsSetting && res.subscriptionsSetting.itemSettings) || {};
|
||||
resolve(itemSettings[TEMPLATE_ID]);
|
||||
resolve(itemSettings[tmplId]);
|
||||
},
|
||||
fail() {
|
||||
resolve(undefined);
|
||||
|
||||
Reference in New Issue
Block a user