# 订阅消息(选接)
基于微信的通知渠道,微信小游戏为开发者提供了可以高效触达用户的订阅消息能力,以便实现服务的闭环并提供更佳的体验。开发者在游戏内,可向用户发起消息订阅。开发者需后台自行记录用户是否订阅成功及订阅成功的次数。
用户在小游戏中订阅指定的消息内容后,开发者可以在后台通过下发消息服务把一条模版消息发送给用户,用户最终在微信的“服务通知”中收到。开发者可通过场景值(1014)区分从模版消息进入游戏的用户。
用户成功订阅一次,开发者可在游戏认为场景合适的时机,向该用户发下一条模版消息。
# 一次性订阅消息
# 接口说明
用于在游戏内打开一次性订阅消息界面,返回用户订阅消息的操作结果;若用户勾选了订阅面板中的“总是保持以上选择”,模板消息会被添加到用户的游戏设置页,可通过 sdkInstance.getSetting()
接口获取用户对相关模板消息的订阅状态;当用户成功订阅一次,开发者可在游戏认为场景合适的时机,向该用户下发一条模版消息(了解更多可查看小游戏订阅消息使用指引)。
sdkInstance.subscribeMessage(options);
最低基础库版本要求
若用户客户端基础库版本低于 2.4.4
,调用 sdkInstance.subscribeMessage(options)
接口将中断用户当前操作并弹出升级提示,不会报错!
# 参数说明
参数说明如下表所示:
选项 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
tmplIds | string[] | 是 | -- | 需要订阅的消息模板 id 集合,一次调用最多可订阅 3 条消息;可登录《微信公众平台》后台,进入“功能 > 订阅消息”栏目中配置及查看消息模板 id ,每个 tmplId 对应的模板标题需要不同,否则会被过滤 |
success | function | 否 | -- | 订阅成功的回调函数 |
fail | function | 否 | -- | 订阅失败的回调函数 |
complete | function | 否 | -- | 订阅完成的回调函数,成功或失败均会调用 |
# 返回值说明
WARNING
返回值格式:JSON
格式。
选项 | 类型 | 说明 |
---|---|---|
code | number | 订阅状态码,为 0 时表示订阅成功,其他非 0 状态码均表示订阅失败 |
data | object | 订阅成功时返回用户订阅消息的操作结果,失败时返回 null |
data[TEMPLATE_ID] | string | [TEMPLATE_ID]是动态的键,即模板 id ,值包括 accept 、reject 、ban 、filter ,其中 accept 表示用户同意订阅该条 id 对应的模板消息,reject 表示用户拒绝订阅该条 id 对应的模板消息,ban 表示已被后台封禁,filter 表示该条 id 对应的模板因为标题同名被后台过滤 |
message | string | 订阅成功或失败时的相应描述信息 |
# 示例代码
注:示例代码中的参数或选项均为演示数据,仅供参考,谢谢!
// 若用户客户端基础库版本低于 2.4.4,调用此接口将中断用户当前操作并弹出升级提示,不会报错!
sdkInstance.subscribeMessage({
tmplIds: ["iGVl1bT_JiQ82cafpXAxMurVMykQW5ScT7UbekFEhJQ"], // 一次调用最多可订阅3条消息
success: function(response) {
console.log(response.code); // 订阅状态码,此处为0,表示订阅成功
console.log(response.data); // 用户订阅消息的操作结果
},
fail: function(error) {
console.log(error); // 订阅失败的错误信息,error.code为非0状态码,error.message为错误消息
},
complete: function(result) {
// do something here...
}
});
# 系统订阅消息
# 接口说明
用于在游戏内打开系统订阅消息界面,返回用户订阅消息的操作结果;当用户订阅成功,且游戏内触发相应场景时,微信平台将向用户下发服务通知(订阅一次,永久生效),无需开发者控制下发逻辑(了解更多可查看小游戏系统订阅消息使用指引)。
sdkInstance.subscribeSystemMessage(options);
最低基础库版本要求
若用户客户端基础库版本低于 2.9.4
,调用 sdkInstance.subscribeSystemMessage(options)
接口将中断用户当前操作并弹出升级提示,不会报错!
若参数 msgTypeList
中包含 SYS_MSG_TYPE_WHATS_NEW
,则要求用户客户端基础库版本不低于 2.32.1
!
# 消息触发场景
场景1 好友互动
开发者在游戏内设置与微信好友赠送礼物、偷取道具等互动行为。当有用户成功触发互动行为时,若对方已订阅“好友互动提醒”,则对方会收到对应的服务通知;每次成功互动,下发一条消息。
每次调用 wx.modifyFriendInteractiveStorage
且用户确认互动后,会产生一条服务通知。接口参数 quiet
设置为 true
的接口调用,将不会触发服务通知。
场景2 排行榜超越
场景3 好友互动
# 参数说明
参数说明如下表所示:
选项 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
msgTypeList | string[] | 是 | -- | 系统订阅消息类型列表,一次调用最多可订阅
|
success | function | 否 | -- | 订阅成功的回调函数 |
fail | function | 否 | -- | 订阅失败的回调函数 |
complete | function | 否 | -- | 订阅完成的回调函数,成功或失败均会调用 |
# 返回值说明
WARNING
返回值格式:JSON
格式。
选项 | 类型 | 说明 |
---|---|---|
code | number | 订阅状态码,为 0 时表示订阅成功,其他非 0 状态码均表示订阅失败 |
data | object | 订阅成功时返回用户订阅消息的操作结果,失败时返回 null |
data[MSG_TYPE] | string | [MSG_TYPE]是动态的键,即系统订阅消息类型,值包括 accept 、reject 、ban ,其中 accept 表示用户同意订阅该类型对应的模板消息,reject 表示用户拒绝订阅该类型对应的模板消息,ban 表示已被后台封禁 |
message | string | 订阅成功或失败时的相应描述信息 |
# 示例代码
注:示例代码中的参数或选项均为演示数据,仅供参考,谢谢!
// 若用户客户端基础库版本低于 2.9.4,调用此接口将中断用户当前操作并弹出升级提示,不会报错!
// 若参数 msgTypeList 中包含 SYS_MSG_TYPE_WHATS_NEW,且用户客户端基础库版本低于 2.32.1,调用此接口将中断用户当前操作并弹出升级提示,不会报错!
sdkInstance.subscribeSystemMessage({
msgTypeList: ["SYS_MSG_TYPE_INTERACTIVE", "SYS_MSG_TYPE_RANK", "SYS_MSG_TYPE_WHATS_NEW"],
success: function(response) {
console.log(response.code); // 订阅状态码,此处为0,表示订阅成功
console.log(response.data); // 用户订阅消息的操作结果
},
fail: function(error) {
console.log(error); // 订阅失败的错误信息,error.code为非0状态码,error.message为错误消息
},
complete: function(result) {
// do something here...
}
});