推送配置
应用的离线推送在应用详情的“推送”标签页中配置,分为三部分:
- 推送凭据:上传 APNs、FCM 和各手机厂商通道的凭据,发送测试推送;
- 通知模板:修改通知的标题和正文,或者为更多语言提供模板;
- 推送统计:按日期、通道、类别和结果查看推送的次数。
排查某个用户收不到推送时,在“IM 用户”中打开这个用户,查看他的“推送”标签页,见用户的推送设备与设置。离线推送的规则(推给哪些设备、免打扰、角标等)见离线推送。
先上传凭据,再发布 App
应用没有凭据时不会发出任何离线推送。App 登记推送令牌时要指明凭据的名称,名称不存在时登记失败,所以请先在控制台上传凭据,再把凭据的名称配置到 App 中。
角色与权限
| 操作 | owner | admin | developer |
|---|---|---|---|
| 查看推送凭据(不含密钥)、通知模板和推送统计 | ✓ | ✓ | ✓ |
| 发送测试推送 | ✓ | ✓ | ✓ |
| 修改和恢复通知模板 | ✓ | ✓ | ✓ |
| 查看用户的推送设备、推送设置和会话免打扰;修改用户的推送设置、取消会话免打扰、解绑推送设备 | ✓ | ✓ | ✓ |
| 添加凭据、更换凭据的密钥、删除凭据(需要重新验证身份) | ✓ | ✓ | |
| 修改凭据的公开参数,停用和启用凭据 | ✓ | ✓ |
持有凭据就能向这个 App 的全部用户推送任意内容,所以上传、更换和删除凭据要求在最近 10 分钟内重新验证过身份。以上写操作和测试推送都记录在操作日志中,日志中不记录密钥:凭据为 push_credential.create、push_credential.update、push_credential.disable、push_credential.enable、push_credential.delete,模板为 push_template.update、push_template.delete,用户的推送设置、会话免打扰、解绑设备和测试推送为 push.settings_update、push.conversation_setting_update、push.device_unbind、push.test。
推送凭据
“推送凭据”列出应用的全部凭据,按名称排序:
| 列 | 说明 |
|---|---|
| 名称 | 凭据的名称,App 登记推送令牌时用它指明凭据 |
| 通道 | 推送通道。APNs 凭据另外标出环境(生产或开发),能发 VoIP 推送的标出“VoIP” |
| 包名 | iOS 的 Bundle ID 或 Android、鸿蒙的包名 |
| 密钥 | 供辨认的提示,不是密钥本身:APNs 的 .p8 密钥为 Key ID,.p12 证书为证书的名称,并显示还有多少天到期(30 天内到期时标红);FCM 为服务账号的邮箱;鸿蒙为密钥 ID;其他通道为密钥的末 4 位 |
| 状态 | 启用或已停用。被平台停用的另外标出“平台停用”;暂停中的标出暂停的原因,鼠标移上去显示暂停到什么时候,见凭据的暂停 |
| 最近成功 | 最近一次经这份凭据推送成功的时间,最多每分钟更新一次 |
| 最近错误 | 最近一次凭据类错误(鉴权失败、证书过期、包名不符、令牌无效突增、厂商的每日额度已满等)的错误码,鼠标移上去显示说明和时间。网络错误不记在这里 |
添加凭据
owner 或 admin 点击“添加凭据”,填写以下内容后点击“保存”,按提示重新验证身份:
| 字段 | 说明 |
|---|---|
| 名称 | 字母、数字、_、-、.,1 到 64 个字符,区分大小写,如 ios-prod、xiaomi-main。同一个应用中不能重复;删除后可以再次使用 |
| 通道 | apns、fcm、huawei、harmony、xiaomi、oppo、vivo、honor、meizu 之一 |
| Bundle ID 或包名 | 客户端 App 的 Bundle ID(iOS、macOS)或包名(Android、鸿蒙),必须与 App 一致,如 com.example.chat。至少包含一个 . |
| 环境 | 只用于 APNs:生产(production)或开发(sandbox),见 Apple APNs |
| 公开参数 | 各通道的 App ID、消息分类、通知渠道等,见各通道的凭据。每项最长 64 个字符 |
| 密钥 | 各通道的密钥、证书或服务账号,可以粘贴内容,也可以点击“从文件读取”选择文件 |
保存时检查密钥的格式:.p8 密钥能否解析,.p12 证书的密码是否正确、是否已过期、是否包含填写的 Bundle ID,服务账号的私钥能否解析。不符合时提示“凭据的密钥无效”,不说明密钥的哪一部分有误。
密钥加密保存,保存后任何页面和接口都不再显示,只显示供辨认的提示。通道、环境和包名创建后不能修改:换了 App 或环境,原来登记的令牌都不能再用,请新建一份凭据。
每个应用最多 20 份凭据,同一个通道可以有多份。一个 IM 应用对应多个客户端 App(如主 App 和极速版)时,各上传一份凭据,各个 App 用自己的凭据名称登记令牌。
各通道的凭据
Apple APNs
APNs 有两种鉴权方式,推荐使用 .p8 密钥:
.p8密钥(推荐):在 Apple Developer 网站的 Certificates, Identifiers & Profiles 中,创建一个启用了 Apple Push Notifications service (APNs) 的密钥,下载.p8文件(只能下载一次),记下它的 Key ID;Team ID 在开发者账号的会员信息中。填写 Key ID、Team ID,粘贴.p8文件的内容。.p8密钥不会过期,同一个密钥可以用于开发者账号下的多个 App,也可以发 VoIP 推送。.p12证书:在 Certificates, Identifiers & Profiles 中为 App 创建 Apple 推送证书,导入钥匙串后连同私钥导出为.p12文件,选择文件并填写导出时设置的密码。证书有到期时间,到期前 30 天起,系统以邮件或短信提醒租户的所有者和管理员,请在到期前更换。证书中同时登记了{Bundle ID}.voip的才能发 VoIP 推送,列表中标出“VoIP”。
环境:从 Xcode 直接安装到手机上调试的 App 使用开发环境(sandbox),App Store、TestFlight 和企业分发的 App 使用生产环境(production)。两种环境的令牌不通用:开发版 App 的令牌用生产环境的凭据发送,会被报告为令牌无效。同一个 App 的开发版和生产版各上传一份凭据(.p8 密钥可以用同一个),如 ios-dev 和 ios-prod,App 按自己的构建类型使用对应的名称登记。
可选参数:
| 参数 | 说明 |
|---|---|
提示音 sound | 消息和通知的提示音,填写 App 中声音文件的名称,默认为系统的 default |
允许通知扩展改写内容 mutable_content | 开启后通知带 mutable-content,App 可以在 Notification Service Extension 中改写通知的内容,如按本地的好友备注显示发送者 |
Google FCM
在 Firebase 控制台打开 App 所在的项目,在“项目设置”的“服务账号”中生成新的私钥,下载服务账号的 JSON 文件,粘贴文件的内容或选择这个文件。包名填写 Android App 的包名(applicationId),App 中集成的 Firebase 配置要属于同一个项目。
可选参数:
| 参数 | 说明 |
|---|---|
通知渠道 ID android_channel_id | 消息和通知使用的 Android 通知渠道(Android 8 以上),App 启动时要创建同样 ID 的渠道 |
静默渠道 ID silent_channel_id | 撤回后更新通知时使用的渠道,App 以低重要级别创建它,替换通知时不再响铃。没有填写时使用通知渠道 ID,可能再响一次 |
来电、未接来电等经 FCM 发送的是数据消息,由 App 自行显示,不需要另外配置。
国内手机厂商和鸿蒙
在各厂商的开发者平台上为 App 开通推送服务后,填写以下材料:
| 通道 | 在哪里获取 | 必填 | 可选参数 |
|---|---|---|---|
华为 huawei | 华为 AppGallery Connect 中 App 的应用信息 | App ID、App Secret | 消息分类 category |
鸿蒙 harmony | 华为 AppGallery Connect:项目的项目 ID;在项目设置中创建服务账号密钥,下载 JSON 文件 | 项目 ID、服务账号密钥 JSON | 消息分类 category |
荣耀 honor | 荣耀开发者服务平台中 App 的推送服务信息 | App ID、Client ID、Client Secret | 通知的重要级别 importance,按荣耀推送的取值填写 |
小米 xiaomi | 小米开放平台的推送服务中 App 的应用信息 | App Secret | 通道 ID channel_id;静默通道 ID silent_channel_id |
OPPO oppo | OPPO 开放平台的推送服务中 App 的应用信息 | App Key、Master Secret | 通知渠道 ID channel_id;消息分类 category;静默渠道 ID silent_channel_id |
vivo vivo | vivo 开放平台的推送服务中 App 的应用信息 | App ID、App Key、App Secret | 消息分类 category |
魅族 meizu | 魅族开放平台的推送服务中 App 的应用信息 | App ID、App Secret | — |
- 消息分类和通知渠道:国内厂商要求按内容申请消息分类(如即时通讯、私信),没有申请的推送按厂商的默认分类处理,会被限量甚至拒收。请在厂商后台申请即时通讯类的分类,把分类的取值、通知渠道 ID 原样填在凭据中,发送时随推送带上。
- 静默渠道:小米、OPPO 填写了静默渠道的,撤回后更新通知时使用它,App 以低重要级别创建这个渠道。
- 华为、鸿蒙、小米、OPPO 凭据中的“来电分类”“来电通道 ID”“来电渠道 ID”可以填写,目前来电在这些通道上按普通的高优先级通知发送,暂不使用这几项。
- 华为通道同时适用于 Android 和鸿蒙设备,鸿蒙通道只适用于鸿蒙设备,其他国内厂商只适用于 Android 设备。
修改凭据
owner 或 admin 点击凭据的“修改”:
- 公开参数:可以直接修改,保存时整体替换,不需要重新验证身份;
- 更换密钥:打开“更换密钥”,上传新的密钥、证书或服务账号,需要重新验证身份。APNs 凭据更换鉴权方式(
.p8密钥和.p12证书之间)时,必须同时上传新的密钥; - 名称、通道、环境和包名不能修改。
保存后对之后的推送立即生效,凭据的“最近错误”被清空。如果提示“内容已被修改,请刷新后重试”,说明有人在你打开之后修改过这份凭据,请刷新后重新修改。
停用与启用
owner 或 admin 点击“停用”,可以填写原因。停用后这份凭据立即不再用于发送(包括来电),用它登记的令牌保留:设备还登记了其他凭据的令牌时改用下一个,没有的收不到推送。点击“启用”后恢复。凭据停用期间 App 仍可以用它登记令牌,启用后立即可用。
平台停用:凭据被平台停用时(如被用于推送违规内容),状态旁标出“平台停用”,鼠标移上去可以看到原因,系统同时以邮件或短信通知租户的所有者和管理员。被平台停用的凭据不能修改、启用或删除,只能由平台启用,启用后同样会通知。
删除凭据
owner 或 admin 点击“删除”,按提示重新验证身份。删除后凭据立即不再用于发送,用它登记的令牌由后台清理。删除后可以用同一个名称重新添加,但原来登记的令牌不会恢复,要等 App 下次启动重新登记后才能收到推送。被平台停用的凭据不能删除。
凭据的暂停
推送通道出现以下情况时,系统暂时停止使用这份凭据,凭据的状态旁显示暂停的原因。暂停期间的推送改用设备的下一个令牌,没有的计入 channel_paused,到时间后自动恢复,不需要处理:
| 原因 | 说明 | 暂停多久 |
|---|---|---|
| 通道限额 | 通道返回请求过于频繁 | 通道要求的时间,没有给出时 60 秒,最长 1 小时 |
| 每日额度已满 | 厂商给这个 App 的每日推送额度已经用完,同时记在“最近错误”中 | 到北京时间次日 0 点 |
| 连续鉴权失败 | 1 分钟内连续 20 次凭据类错误,如密钥不对、证书已过期 | 1 分钟 |
| 令牌无效突增 | 1 分钟内至少发送 50 次、其中超过一半报告令牌无效,通常是凭据的环境或包名与 App 不符 | 10 分钟。其间报告无效的令牌不删除,以免一次删光这份凭据的令牌 |
凭据连续出错 1 小时(其间没有一次成功)时,系统以邮件或短信通知租户的所有者和管理员;同一次持续的出错只通知一次,恢复成功后再出错时重新计算。请检查凭据的密钥、环境和包名,修改凭据后“最近错误”随之清空。
测试推送
点击凭据的“测试”,用这份凭据发一条测试推送,可以选择:
- 用户名:发给这个用户用这份凭据登记了令牌的设备,每台设备一条;
- 令牌:直接发给一个令牌,例如在 App 发布前,把调试日志中的令牌复制过来,验证凭据是否配置正确。APNs 按凭据的环境发送。
测试推送的标题为“测试推送”,正文为“这是一条测试推送,收到说明推送配置正确”,按设备登记的语言显示(直接发给令牌的使用应用的默认语言),不能自定义。它不受免打扰和在线状态的限制,不带角标,不计入应用的推送额度,不使用 VoIP 令牌。
发送后等待通道的结果,最多 10 秒,按设备列出:
| 列 | 说明 |
|---|---|
| 设备 | 设备的平台和会话 ID;直接发给令牌的显示“令牌” |
| 凭据 | 使用的凭据和通道 |
| 令牌 | 遮盖后的令牌,只显示前 6 位和后 4 位 |
| 结果 | 推送的结果,失败时另外显示通道返回的错误码,见排查收不到推送 |
- 发给用户时,这个用户没有用这份凭据登记令牌的设备也会列出,结果为“凭据不可用”(
credential_unavailable); - 通道报告令牌无效时,这个令牌会被删除(直接发给令牌的不删除任何数据);
- 测试推送遇到网络错误不重试,直接显示
failed; - 每个应用每分钟最多发 20 次测试推送,同一个用户每分钟最多 5 次,超出时提示“测试推送过于频繁,请稍后再试”。应用停用或被暂停时不能发送。
通知模板
通知的标题和正文由模板生成,内置简体中文(zh-CN)、繁体中文(zh-TW)和英文(en)三种语言。“通知模板”列出全部模板键,以及每个模板键可以使用的占位符、内置的简体中文内容和已有的覆盖。模板的选择和语言的查找顺序见通知的标题和内容。
覆盖模板
点击模板键所在行的“覆盖”,填写:
| 字段 | 说明 |
|---|---|
| 语言 | BCP 47 语言标签,如 zh-CN、en、ja,保存为小写。可以覆盖内置语言,也可以新增其他语言 |
| 标题 | 最长 64 个字符,可以为空,为空时通知的标题位置由系统显示 App 名称 |
| 正文 | 1 到 256 个字符 |
- 只能使用这个模板键的占位符(列表中“占位符”一列),使用其他占位符或花括号不成对时不能保存;要显示花括号本身时连写两个。
- 不能有控制字符(如换行)。
- 每个应用最多 300 条覆盖。
- 已有的覆盖显示为语言标签,点击标签修改,点击标签上的关闭按钮删除覆盖、恢复内置模板。
- 保存后对之后的推送立即生效,已经发出的通知不变。
例如为日语用户覆盖 message.group:标题为 {group},正文为 {sender}:{content}。日语设备的群消息随即使用这个模板,没有覆盖的其他模板键仍按语言的查找顺序使用默认语言。
模板键
| 模板键 | 用途 | 占位符 | 内置的标题 | 内置的正文 |
|---|---|---|---|---|
message.single | 单聊消息 | {sender}、{content} | {sender} | {content} |
message.single_merged | 单聊,合并了多条 | {sender}、{count}、{content} | {sender} | [{count}条] {content} |
message.group | 群消息 | {group}、{sender}、{content} | {group} | {sender}: {content} |
message.group_merged | 群消息,合并了多条 | {group}、{count}、{sender}、{content} | {group} | [{count}条] {sender}: {content} |
message.group_mention | 群消息 @ 了本人 | {group}、{sender}、{content} | {group} | [有人@我] {sender}: {content} |
message.group_system | 以系统身份发送的群消息 | {group}、{content} | {group} | {content} |
message.single_sender_only | 预览方式为“只显示发送者”的单聊消息 | {sender} | {sender} | 发来一条新消息 |
message.group_sender_only | 预览方式为“只显示发送者”的群消息 | {group}、{sender} | {group} | {sender} 发来一条新消息 |
message.hidden | 预览方式为“都不显示”的消息 | 无 | 空 | 你收到了一条新消息 |
content.image、content.voice、content.video | 图片、语音、视频消息的摘要,即 {content} | 无 | — | [图片]、[语音]、[视频] |
content.file | 文件消息的摘要 | {file_name} | — | [文件] {file_name} |
content.location | 位置消息的摘要 | {location_name} | — | [位置] {location_name} |
content.custom、content.unknown | 自定义消息、其他类型消息的摘要 | 无 | — | [消息] |
name.deleted_user | 发送者已删除时的 {sender} | 无 | — | 已删除的用户 |
name.unnamed_group | 群没有名称时的 {group} | 无 | — | 群聊 |
name.system | 以系统身份发送时的 {sender} | 无 | — | 系统 |
recall.single | 单聊消息被发送者撤回后的通知 | {sender} | {sender} | 撤回了一条消息 |
recall.group | 群消息被发送者撤回后的通知 | {group}、{sender} | {group} | {sender} 撤回了一条消息 |
recall.removed | 消息被其他人撤回,或预览方式为“都不显示” | 无 | 空 | 一条消息已被撤回 |
friend.request | 收到好友申请 | {sender} | {sender} | 请求添加你为好友 |
friend.accepted | 好友申请被同意 | {sender} | {sender} | 已同意你的好友申请 |
friend.added | 被对方直接添加为好友 | {sender} | {sender} | 已添加你为好友 |
group.application | 有人申请入群 | {group}、{target} | {group} | {target} 申请加入群聊 |
group.invite_review | 成员的邀请等待审批 | {group}、{inviter}、{target} | {group} | {inviter} 邀请 {target} 加入群聊,等待审批 |
group.invitation | 收到入群邀请 | {group}、{inviter} | {group} | {inviter} 邀请你加入群聊 |
group.removed | 被移出群 | {group} | {group} | 你已被移出群聊 |
group.dismissed | 群解散 | {group} | {group} | 群聊已解散 |
notice.hidden | 预览方式为“都不显示”的好友和群的通知 | 无 | 空 | 你收到了一条新通知 |
call.audio、call.video | 单聊的语音、视频来电 | {sender} | {sender} | 邀请你语音通话、邀请你视频通话 |
call.group_audio、call.group_video | 群通话的邀请 | {group}、{sender} | {group} | {sender} 邀请你加入语音通话、{sender} 邀请你加入视频通话 |
call.missed、call.canceled | 未接来电、对方已取消 | {sender} | {sender} | [未接来电]、对方已取消通话 |
call.hidden | 预览方式为“都不显示”的来电 | 无 | 空 | 你有一个新的来电 |
call.missed_hidden | 预览方式为“都不显示”的未接来电、对方已取消 | 无 | 空 | 你有一个未接来电 |
test | 测试推送 | 无 | 测试推送 | 这是一条测试推送,收到说明推送配置正确 |
占位符:{sender} 为发送者(或申请人、来电方)的昵称,没有昵称时为用户名;{group} 为群名称;{content} 为消息的摘要;{count} 为合并的条数;{inviter}、{target} 为邀请人和被邀请或申请入群的人的昵称;{file_name}、{location_name} 为文件名和位置名称。替换后为空的占位符,多余的空白会被去掉。content.* 和 name.* 只使用正文,替换到其他模板的占位符中。
服务端发送消息时在 push 中给出的标题和正文不套用模板,见发送消息时的 push 字段。
推送统计
“推送统计”按日期、通道、类别和结果统计推送的次数:
- 查询范围:选择日期范围,最多查询最近 180 天,一次最多 92 天。日期按北京时间划分,页面上显示统计时区;当天的数据随时更新。
- 筛选:可以按通道和类别筛选。类别为消息、好友和群的通知、来电、清除来电通知、撤回后的更新和测试推送。
- 汇总:顶部显示范围内主要结果的合计:通道已接受、失败、令牌无效、凭据暂停中、超出推送额度、前台在线、免打扰和没有设备。
- 明细:每一行为一个日期、通道、类别和结果的次数,没有推送的组合不显示。没有选出令牌的结果(如前台在线、免打扰、没有设备),通道显示为
-。
各结果的含义和计数单位见推送统计与排查。几个值得关注的比例:
- 令牌无效突然增多,通常是新上传的凭据与 App 的环境或包名不符;
- 失败持续出现,请查看对应凭据的最近错误,或发测试推送查看通道返回的错误码;
- 超出推送额度出现时,说明应用每分钟的推送次数达到了上限,需要提高时请联系我们;
- 前台在线占比明显偏低,可能是 App 没有在切到后台时上报状态;明显偏高而用户反映收不到提醒,可能是 App 切到后台时上报没有送达。
用户的推送设备与设置
在“IM 用户”中打开一个用户,“推送”标签页中显示:
登记了推送的设备:
| 列 | 说明 |
|---|---|
| 设备 | 平台和设备标识 |
| 在线 | 前台在线、后台或离线。前台在线的设备不推送 |
| 令牌 | 每个令牌的序号(#1、#2 为普通令牌的优先顺序,VoIP 为 VoIP 令牌)、凭据和通道、遮盖后的令牌,以及凭据的状态:可用、凭据已停用、凭据暂停中或凭据已删除 |
| 语言 | 设备登记的语言,没有登记的显示“默认”,使用应用的默认语言 |
| 角标 | 这台设备当前的角标计数 |
| 登录时间 | 这次登录的时间 |
- 解绑:删除这台设备的推送登记,设备随即收不到这个用户的推送。登录不受影响,App 下次启动时会重新登记。用于处理“这台手机收到了别人的推送”这类问题,或在排查时让 App 重新登记;要让设备彻底收不到推送,请在“登录设备”中把它踢下线。
- 发测试推送:向这个用户全部登记了推送的设备发一条测试推送,每台设备用第一个可用的令牌,规则同测试推送。
设备列表为空,说明 App 没有在任何设备上登记推送:App 没有调用登记、用户在 App 内或系统设置中关闭了通知、已经退出登录,或者用户只在 Web 等不能登记推送的平台上登录。
推送设置:全局免打扰(关闭、到什么时候或一直开启)、夜间免打扰(时段和时区)和预览方式(没有选择时显示应用默认的预览方式)。点击“修改”可以替用户修改:
| 项目 | 说明 |
|---|---|
| 全局免打扰 | 关闭;一段时间(从现在起的小时数);一直开启 |
| 夜间免打扰 | 关闭,或开启并填写开始、结束时刻(HH:MM)和时区 |
| 预览方式 | 应用默认、显示发送者和内容、只显示发送者、不显示内容 |
会话免打扰:用户设置了免打扰的单聊和群、方式(不推送,或只在 @ 我时推送)和到期时间。点击“取消”恢复这个会话的正常推送。
修改后用户在线的设备立即同步新的设置。服务端也可以通过 OpenAPI 管理这些设置和设备,见推送设备与设置。
排查收不到推送
用户反映收不到推送时,按以下顺序检查:
- 设备:在用户的“推送”标签页查看他的设备。没有设备的,见上文的原因;设备显示“前台在线”而 App 实际已在后台的,是 App 没有上报后台状态;令牌的凭据状态不是“可用”的,到“推送凭据”中查看这份凭据。
- 免打扰:查看推送设置和会话免打扰,注意夜间免打扰的时区。
- 测试推送:点击“发测试推送”,查看每台设备的结果。
- 凭据:在“推送凭据”中查看对应凭据的最近错误和暂停状态。
- 统计:在“推送统计”中按通道和结果查看这段时间的推送分布。
测试推送和统计中常见的结果:
| 结果 | 常见原因 | 处理 |
|---|---|---|
通道已接受 sent | 通道已收下推送,但设备是否显示还取决于设备 | 设备没有显示时,检查系统设置中是否关闭了 App 的通知、Android 是否创建了凭据中配置的通知渠道、国内厂商的消息分类是否已申请、当天的额度是否已用完 |
令牌无效 invalid_token | App 已卸载或令牌已过期;或者令牌与凭据不匹配:iOS 开发版 App 的令牌用了生产环境的凭据(或者相反),包名、Bundle ID 与凭据不同,令牌属于另一个 Firebase 项目 | 核对凭据的环境和包名,让 App 用正确的凭据名称重新登记 |
失败 failed,错误码为 network_error 或 timeout | 服务端访问推送通道失败 | 一般是暂时的网络问题,正式的推送会自动重试两次;持续出现请联系我们 |
失败 failed,其他错误码 | 通道拒绝了这条推送,错误码由通道返回,如 APNs 的 BadDeviceToken | 按通道的文档处理;鉴权类的错误检查密钥是否正确、证书是否已过期 |
凭据不可用 credential_unavailable | 设备的令牌所属的凭据都已停用或删除;用凭据测试时,这台设备没有用这份凭据登记令牌 | 启用凭据,或让 App 用可用的凭据重新登记 |
凭据暂停中 channel_paused | 凭据因通道限额、每日额度已满等原因暂停中 | 见凭据的暂停 |
免打扰 skipped_dnd | 用户的免打扰挡住了推送 | 确认是否为用户自己的设置 |
前台在线 skipped_online | 设备在前台,消息由长连接送达 | 无需处理 |
