# 订阅消息(选接)

基于微信的通知渠道,微信小游戏为开发者提供了可以高效触达用户的订阅消息能力,以便实现服务的闭环并提供更佳的体验。开发者在游戏内,可向用户发起消息订阅。开发者需后台自行记录用户是否订阅成功及订阅成功的次数。

用户在小游戏中订阅指定的消息内容后,开发者可以在后台通过下发消息服务把一条模版消息发送给用户,用户最终在微信的“服务通知”中收到。开发者可通过场景值(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,值包括 acceptrejectbanfilter,其中 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[] --

系统订阅消息类型列表,一次调用最多可订阅 3 条消息

  • SYS_MSG_TYPE_INTERACTIVE - 好友互动提醒
  • SYS_MSG_TYPE_RANK - 排行榜好友超越提醒
  • SYS_MSG_TYPE_WHATS_NEW - 游戏更新提醒,基础库 2.32.1 版本开始支持
success function -- 订阅成功的回调函数
fail function -- 订阅失败的回调函数
complete function -- 订阅完成的回调函数,成功或失败均会调用

# 返回值说明

WARNING

返回值格式:JSON 格式。

选项 类型 说明
code number 订阅状态码,为 0 时表示订阅成功,其他非 0 状态码均表示订阅失败
data object 订阅成功时返回用户订阅消息的操作结果,失败时返回 null
    data[MSG_TYPE] string [MSG_TYPE]是动态的键,即系统订阅消息类型,值包括 acceptrejectban,其中 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...
  }
});
Last Updated: 2025/3/20 14:04:23