移动推送厂商通道部分错误码和错误原因说明

关于错误码说明

移动推送设备状态分为设备在线和设备离线,若接入了厂商通道在设备离线时推送,并且在对应的厂商开放平台配置了回执地址,则厂商通道发送失败(event_type=sent_fail)或到达失败(event_type=arrive_fail)时会返回错误原因,本文是针对常见错误码的解释。

移动推送收不到消息时,可通过以下两种方式获取消息状态。

1.通过EMAS控制台用户增长移动推送排查工具排查消息,输入消息ID和设备ID查询消息的状态。其中设备信息显示在线状态,推送设备列表显示已推送的设备信息,右侧推送链路显示的推送状态。

2.开通回执日志,选择时间范围,系统自动筛选符合时间范围的回执日志。在日志reason字段中是发送失败(event_type=sent_fail)或到达失败(event_type=arrive_fail)原因。

错误码格式

一般格式为:

Android:code#msg,code为厂商通道错误码,msg为错误解释或HTTP Code。

iOS:msg,msg为错误解释或HTTP Code。

厂商通道错误码汇总

下行消息错误码

回执错误码

华为

常见错误码

消息回执场景介绍

荣耀

下行消息响应码

错误码

小米

错误码参考

消息回执

OPPO

返回码

消息回执事件

vivo

错误码参考

消息回执场景介绍

魅族

常见错误码

FCM

错误码参考

APNs

错误码参考

鸿蒙

响应参数响应码

回执状态码

常见厂商通道错误码

华为

6003#certificate fingerprint error

指纹证书配置不一致。客户端应用打包的证书和在AppGallery Connect网站上给应用配置的“SHA256证书指纹”不一致。

80100016#Anti-Spam: word is forbidden in [CONTENT]

消息体中带有敏感词汇,请检查发送消息内容。

80300007#Invalid Token

指定的Token无效,建议检查EMAS控制台华为厂商配置参数与华为开发平台项目设置推送服务常规应用下的 APP ID、包名、client Secret 是否一致。

2#app deleted

成功发送到设备后发现应用不存在,通常表示应用已卸载。

5#invalid token

指定的Token在当前Android终端用户下不存在,APP卸载了。

6#notify disabled

手机通知栏权限未开启,请开启通知栏权限。

10#inactive device

非活跃设备,设备为非活跃设备(终端设备未接入网络达30天),消息不进行下发。

31#invalid version

系统版本或应用不支持该消息请确认目标应用是否支持该消息。

如下几种情况不支持该消息:

1、目标应用中不存在Intent中指向的页面。

2、目标应用中的activity有权限保护。

3、推送服务版本低于11.1.2.300且目标应用中的activity设置了exported为false。

4、尝试升级推送服务(EMUI 9.1.0以下不支持升级)。

102#frequency control

消息频控丢弃,每天向某个设备上某个应用最多可发送3000条,超过后会被限流24小时。

201#invalid device

消息发送管控,消息被Push服务端管控不下发,建议做过滤处理减少无效推送。

可能的原因:

1、消息中指定的Token与设备当前登录的用户无法匹配。

2、用户关闭了显示通知栏消息。应用被卸载。

256#frequency control

资讯营销类消息频次限制,设备离线时推送通知走华为通道,推送条数受限,参考 https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/message-restriction-description-0000001361648361 建议排查服务端推送时 AndroidMessageCategory参数(1、未配置 2、已配置参数,但该分类在华为开放平台自分类权益中未申请/申请中/申请成功后未激活/申请分类属于资讯营销类。属于以上情况则会受到条数限制)。

vivo

null#getAuthTokenFail

对比vivo开放平台的appkey等参数与EMAS控制台vivo厂商通道参数是否配置一致。

100_0#other

管控,包括不在推送时间、版本不支持等问题。

100_12000#device frequency control

单应用单用户频次限制。

服务端推送时配置 AndroidNotificationVivoChannel,AndroidMessageVivoCategory 。

具体参考:https://help.aliyun.com/document_detail/2249916.html

101#audit not pass

消息审核不通过。

102_0#other

不匹配其他,包括设备未注册、设备空间不匹配等。

102_20001#not subscribe

不匹配,用户未订阅。检查APP是否卸载,或者是否有第三方推送影响。

102_20002#user not exist

不匹配,用户不存在或者APP卸载。

102_20006#offline XX days

设备不活跃 https://dev.vivo.com.cn/documentCenter/doc/174-399ae34be99511e9bae6d0946672c4fb#w2-89991014。

104_0#other

未展示其他,使用排查消息 获取vivo厂商token、vivo消息Id,咨询vivo开放平台客服。

104_1017#out of hour

未展示,运营消息在夜间23:00~早上07:00不展示。

104_2124#message duplicated

未展示,内容和标题完全相同的运营消息

注:同一天内给同一个用户发送标题和内容相同的运营消息,只会展示一条消息。

104_2144#message expired on show

未展示,消息已过了有效期 。

104_2161#activity not exported

服务端推送时参数AndroidPupopActivity对应的Activity需要在Android侧 AndroidMainFest.xml 中配置exported=true。

104_2162#activity not found

被拉起activity未找到,检查服务端推送时参数AndroidPupopActivity 是否全路径类名,是否存在。

104_2183#activity invalid token

regid失效,请重新从Android端获取。

小米

27001#invalid channel info!

服务端推送时AndroidNotificationXiaomiChannel参数是否正确配置, 小米开放平台消息渠道是否成功申请。https://dev.mi.com/console/doc/detail?pId=2422#_2

16#invalid device

目标设备无效(设备超过30天未联网;alias/user account/regID不正确;App未注册或已卸载;发送目标的区域有误等原因)。

32#notify disabled

关闭了通知栏权限。

1024#expired TTL

消息有效期TTL过期。

128#frequency control

当日推送总量超限或单设备接收超限,限制规则请参见消息限制说明

OPPO

null#responseIsNull

EMAS控制台移动推送OPPO厂商通道 MasterSecret 配置错误,建议OPPO开放平台应用详情 appserversecret 配置到MasterSecret。若配置无误请联系EMAS技术支持获取更多帮助。

regid_invalid#regId invalid

无效RegistrationID,应用被卸载、应用自动注销、用户设备刷机、设备30天内未联网会导致RegistrationID失效。

user_daily_limit#frequency control

单应用单设备限量,当日应用对该设备推送条数超过单设备推送条数限制 https://open.oppomobile.com/new/developmentDoc/info?id=11210

荣耀

40000003#app deleted

目标应用不存在(未安装)。

40000004#token invalid or not exist

指定的Token在终端用户下失效或不存在。

40000005#notify disabled

目标应用通知栏开关被关闭,无通知栏展示权限。

40000009#frequency control

消息因系统原因丢弃,展示失败。主要的原因可能是消息发送数量超过《消息数量管理细则》配额。

40000013#message is managed

通知消息被管控,表示手机处于息屏状态一段时间后,系统对电量优化的一种管控状态,当手机再次亮屏后,会重新下发消息。

40000014#invalid token

token指定的用户与终端设备当前用户不匹配。

40000015#invalid botton action

手机通知栏满,展示失败。

40000021#unknown status

使用排查消息获取荣耀消息id,荣耀厂商token咨询荣耀开放平台客服。

魅族

1006#签名认证失败

110002#pushId⽆效

110010#应用请求频率超过限制

110000#appId不合法

5000#回执地址不存在,请在推送平台配置 魅族开放平台回执地址配置

FCM

AUTH_ERROR#Authentication error.

登录Firebase检查推送相关配置并对比移动端及EMAS配置文件中参数值是否正确。

INVALID_ARGUMENT#The registration token is not a valid FCM registration token

app卸载或token失效。

PERMISSION_DENIED#Firebase Cloud Messaging API has not been used in project atli-cam-new before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/fcm.googleapis.com/overview?project=atli-cam-new then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

登录Firebase 项目设置云消息传递, 启用Firebase Cloud Messaging API(v1);项目设置服务账号,选择java生成服务器密钥json文件并在EMAS控制台厂商通道FCM上传服务器密钥json文件。

SENDER_ID_MISMATCH#SenderId mismatch

移动端配置的SenderId与EMAS控制台 FCM上传的服务证书不匹配。

鸿蒙

80100003#Illegal payload, payload notification category not support

服务端推送时HarmonyCategory配置错误。

80300002#No permission to send message to these tmIDs

登录华为开放平台查看Push服务状态是否已开通,参考配置账号密钥文件创建并下载JSON,EMAS控制台厂商通道证书配置上传JSON文件。

80300007#{"illegalTokens":{"noPushTypeRight":["xxx"]},"failure":1}

所有Token都是无效的,检查客户端应用配置的应用包名、应用ID与AppGallery Connect网站上申请的是否一致。

80300008#Push message size is too long

消息体大小(不含Token)超过系统设置的默认值(4096Bytes)。请求消息体大小超过默认值,请减小消息体后重新发送消息。

APNs

BadDeviceToken

安装包环境和推送环境不匹配。

DeviceTokenNotForTopic

此状态只会出现在iOS的推送,表示此token与推送的证书的bundleID不匹配。先检查证书是否正确,并且检查与客户端打包的bundleId是否一致。

InvalidProviderToken

DeviceToken是一个无效的token。

Received fatal alert: certificate_revoked

证书在开发者平台被撤销了。

Received fatal alert: certificate_expired

证书在开发者平台过期了。

TopicDisallowed

证书的 bundleID非法。

Unregistered

iOS端上未注册DeviceToken,或注册失败,或注册了但没有上报到EMAS推送服务端。