uniapp 小程序 消息订阅授权

608 阅读1分钟
  • tmplIds为订阅消息的id的集合,例如:['aaaaa','bbbbbbb']
  • 调用messageSubscriptionAuthorization函数会返回结果,可以根据结果来判断用户是否授权,从而进行对应的操作
 // 消息订阅授权
	function messageSubscriptionAuthorization(tmplIds) {
		return new Promise((resolve, reject) => {
		uni.getSetting({
			withSubscriptions: true,
			success(res) {
				let info = res.subscriptionsSetting;
				let isFirst = true; // 是否第一次授权
				if (info.itemSettings) {
					tmplIds.forEach((item) => {
						if (info.itemSettings[item] == 'accept') {
							isFirst = false;
						}
					});
				}
				console.log('订阅信息设置', info);
				if (!info.mainSwitch) {
					uni.openSetting({
						//打开设置页
						success(res) {
							console.log('打开设置页', res.authSetting);
						},
					});
				} else {
					uni.requestSubscribeMessage({
						tmplIds,
						success(res) {
							console.log('订阅信息', res);
							let isTmplId = true; // 是否全部授权成功
							tmplIds.forEach((item) => {
								if (res[item] != 'accept') {
									isTmplId = false;
								}
							});
							resolve({
								result: isTmplId,
								isTip: isFirst,
								msg: isTmplId ? '消息订阅授权成功' : '消息订阅未授权',
							});
						},
						fail(errMessage) {
							console.log('订阅消息 失败 ', errMessage);
							resolve({ result: false, isTip: isFirst, msg: '订阅消息失败' });
						},
					});
				}
			},
		});
	});
	}

页面使用

let messageRes = await messageSubscriptionAuthorization([
				'ZuFXHVH-DHyGBYgXXrxNutIkvG29hK1Da3AUW_Zh6YY',
			]);
			if (messageRes.isTip) {
				uni.showToast({ title: messageRes.msg, icon: 'none' });
			}