まず最初に、何をしようとしているのかを知るために、WeChat アプレットの基本をいくつか理解する必要があります。
-
WeChat アプレット メッセージのサブスクリプションを呼び出す方法は 2 つだけです。
1. ユーザーが手動でボタンをクリックする
2. 支払いコールバックが呼び出される -
1 回の通話で最大 3 つのメッセージを購読できます
-
アプレットがポップアップした後、クリック可能な状況が表示されます
。 1. キャンセル/確認ボタンをクリックするだけです
。 2. 上記の選択を常に維持するにチェックを入れます
。 3. 拒否にチェックを入れ、質問しません。 -
1 回限りのサブスクリプションは送信後は無効になり、ユーザーはもう一度クリックして同意する必要があります
1. uniapp は WeChat アプレット ドキュメント
を呼び出します。 注: この前に、上記のオプションを常に保持するをチェックし、ボタンをクリックしたときにこのインターフェイスを呼び出します。正常に呼び出すことができますが、ボックスはポップアップしません。この時点で、それがポップアップ ボックス プロンプトであるか、タスク要件に従って音を鳴らさないサイレント コールバックであるかを確認する必要があります。
uni.requestSubscribeMessage({
tmplIds: ids,
success(res) {
//消息订阅调起成功,返回值'accept'、'reject'、'ban'分别代表用户对此条订阅是同意、拒绝、后台禁用
},
fail(err) {
//消息订阅调起失败
},
complete() {
// 无论确定还是取消,只要点击按钮后都会执行
},
})
2. 上記のメソッドを実装する前提として、バックグラウンドがブロックされているかどうかを判断する必要があります。ブロックされている場合は、ユーザーにバックグラウンドを開くように誘導し、ブロックされていない場合は、WeChat メッセージ サブスクリプションを直接呼び出します。
uni.getSetting({
withSubscriptions: true,
success(alwaysRes) {
if (!alwaysRes.subscriptionsSetting.mainSwitch) {
//后台封禁了
//引导用户打开权限
uni.showModal({
title: '是否重新授权消息订阅功能',
success(res) {
if (res.confirm) {
uni.openSetting({
success(res) {
if (res.subscriptionsSetting) {
Toast('开启权限成功')
}
},
fail() {
Toast('开启权限失败')
},
})
} else if (res.cancel) {
Toast('拒绝开启开启权限')
}
},
})
} else {
//后台未封禁
//alwaysRes.subscriptionsSetting.itemSettings != null 是检测订阅消息中是否有始终保持不再通知的选项
}
},
})