Clientid:个推业务层中对外用户的唯一标识,用于标识客户端身份,简称CID。CID需要由客户端获取并自行记录,安卓获取方式如下,初始化个推SDK后在自定义IntentService 服务中获取,iOS同理。
public void onReceiveClientId(Context context, String clientid) {
Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);}
任务ID:个推业务层中任务维度的唯一标识;若服务端推送,请求成功后会返回result,result中【taskid】或【contentid】的值就是任务ID;若平台上推送,在【推送记录】中点击详情,页面上显示的【task ID】的值。
通知模板消息:指定通知标题和内容后,由个推SDK自动处理在系统通知栏中展示通知栏消息,同时响铃或震动提醒用户(响应和震动受手机系统的设置状态影响)。
透传模板消息:即自定义消息,消息体格式客户可以自己定义,如纯文本、json串等。透传消息个推只传递数据,不做任何处理,客户端接收到透传消息后需要自己去做后续动作处理,如通知栏展示、弹框等。
注意:安卓的消息推送,请求厂商通道成功的消息就不会再通过个推通道推送至客户端,反之亦是如此,即消息只会推送一次
服务端有 strategy 字段,可以控制消息走个推通道还是走厂商通道,设置示例参考厂商下发策略说明。
1.在个推后台【消息推送】-【配置管理】-【应用配置】中是否正常填写保存厂商参数。
2.在个推后台【消息推送】-【配置管理】-【故障排查】-【 检测CID的状态及信息:】中输入CID查询,看是否会返回厂商Device Token。
若返回了具体厂商token,请按以下中各厂商部分说明排查,若未返回token,看下面步骤三
华为
VIVO
小米
OPPO
魅族
手机连接电脑,手机需开启开发者调试模式,打开APP,在androidstudio编译器logcat中过滤"Assist_",若成功打印token信息则表示厂商集成正常。
若未返回任何带有厂商标识的日志,说明厂商推送服务还未置于您App应用内,请重新检查客户端厂商集成相关步骤。
若返回了厂商标识日志,则注意查看返回的厂商Code码,如下示例:
厂商通道 | 返回码 | 含义 | 解决建议 | 官方地址 |
华为 | 1001 | 请确认手机中安装有应用 “华为移动服务” 或 “HMS-Core” | 前往华为应用商店下载安装应用 “HMS-Core” | 华为地址 |
6003 | 应用 APK 未打签名或与华为开放平台登记签名信息不一致 | 为 APK 文件打上签名或检查签名信息是否一致 | ||
907135000 | appId 不合法 | 华为平台上推送状态未打开 | ||
907135702 | 签名文件的 SHA256 值与在华为推送平台上配置的不一致 | 前往华为推送平台检查填写的签名文件 SHA256 值是否配置一致 | ||
小米 | 22006 | 应用程序 ID 不合法 | 前往小米推送平台检查应用的包名、appId、appKey 是否匹配 | 小米地址 |
22007 | 应用程序 Key 不合法 | 前往小米推送平台检查应用的包名、appId、appKey 是否匹配 | ||
22022 | 应用程序 package name 不合法 | 前往小米推送平台检查应用的包名、appId、appKey 是否匹配 | ||
魅族 | 110000 | appId 不合法 | 前往魅族推送平台检查应用的包名、appId、appKey 是否匹配,确认 Flyme 推送平台 的应用信息 | 魅族地址 |
110001 | appKey 不合法 | 前往魅族推送平台检查应用的包名、appId、appKey 是否匹配 | ||
OPPO | 14 | 无效的 AppKey 参数 | 客户端需要的是OPPO 的 AppKey和APPSECRET | OP地址 |
15 | 缺少 AppKey 参数 | 补充 AppKey 参数 | ||
16 | 无效的 AppKey 参数 | 客户端需要的是OPPO 的 AppKey和APPSECRET,检查配置是否正确 | ||
VIVO | 10003 | App 包名与配置不匹配 | 前往 vivo 推送平台检查应用的包名、appId、appKey 是否匹配 | VV地址 |
10004 | appkey 不匹配 | 前往 vivo 推送平台检查应用的包名、appId、appKey 是否匹配 | ||
10005 | appid传入错误 | 前往 vivo 推送平台检查应用的包名、appId、appKey 是否匹配 |
Android 厂商有离线推送的额度限制,基本都限制单设备单应用每天只能收到 2 条普通消息,详见:厂商通道限额&QPS说明。
开发测试阶段额度不足时,可以发送测试消息,目前仅华为、荣耀、vivo、oppo 支持下发测试消息。发送测试消息方式如下:
若调用 服务端 api 推送,可增加options参数:
"options": {
"HW": {
// 值为int 类型。1 表示华为测试消息,华为每个应用每日可发送该测试消息500条。此测试参数请勿发布至线上。
"/message/android/target_user_type": 1
},
"HO": {
//值为int 类型。1 表示测试推送,不填默认为0。荣耀每个应用每日可发送该测试消息1000条。此测试参数请勿发布至线上。
"/android/targetUserType": 1
},
"VV": {
//值为int 类型。0 表示正式推送;1 表示测试推送,不填默认为0。测试额度暂无限制。此测试参数请勿发布至线上。
"/pushMode": 1
}
}
vivo、oppo 发送测试消息,额外需要分别在 vivo 开放平台 、 oppo开放平台 录入测试用户(regid 对应个推cid 绑定的 device token,可以从个推后台的“故障排查”中查询 cid 信息获取)。
华为、荣耀不需要录入测试用户。华为、荣耀、vivo 需要在options内添加测试参数;oppo只需要添加测试设备,不需要options内加参数。
若从 个推后台 页面推送,填写红框附加参数如下:
push_channel(或老版本-notify)消息体中,click_type设置intent类型,在intent里可以设置增加自定义参数值,如下示例中的S.parm1=value1;S.parm2=value2
;S.表示String型,parm1表示参数名,value1表示参数值。
intent://com.getui.push/detail?#Intent;scheme=gtpushscheme;launchFlags=0x4000000;package=包名;component=应用包名/activity路径;S.parm1=value1;S.parm2=value2;end
当用户点击离线通知后,客户端需在对应的Activity页面中通过getIntent去获取对应参数值,如下示例
Intent intent = getIntent();
String parm = getIntent().getStringExtra("服务端自定义的key");
如果intent里Activity的launchMode(启动模式)是singleTask或者singletop,那么用户先打开App,未点击通知时,自定义的参数值依然能在对应Activity的onCreate或onNewIntent里能拿到。
<action android:name="android.intent.action.VIEW"/>
,详见:intent生成。推送条数限制:没有限制!
单推(toSingle)频次限制:250万次/天。
批量推(toList)频次限制:200万次/天。
群推(toAPP)频次限制:20次/天,每分钟不能超过5次,10分钟内不能推重复消息体 。
VIP套餐相关开放情况请点击右侧“技术咨询”了解详情
若安卓用户超过100天、 iOS用户超过一年,CID 一直没有登录请求(CID 没有与个推服务端建立长链接)。则 CID 会失效,之后再启动会重新生成一个CID;
如果应用没有获取sd卡权限,卸载重装/清除缓存,CID会变(CID信息会写入sd卡)。
个推Appid参数、应用的包名、苹果Bundleid的修改。
苹果手机进行了越狱或系统还原。
小米推送的消息通道分为“普通消息”(默认)和“通知消息”两类,默认下发普通消息。普通消息单日可推送数量有限制,通知消息不限。通知消息申请请参见小米推送消息限制说明FAQ4。
个推侧设置小米通道id示例如下:
{
"android": {
"ups": {
"notification": {
// ...其他push_channel参数略
},
"options": {
"XM": {
"channel": "Default" }}}}}
OPush平台上所有通道分为“公信”(默认)、“私信”两类,默认下发公信消息。公信消息单日可推送数量有限制,私信消息不限(仅限单个用户)。私信消息申请请参见OPPOPUSH通道升级公测邀请。
个推侧设置oppo通道id示例如下:
{
"android": {
"ups": {
"notification": {
// ...其他push_channel参数略
},
"options": {
"OP": {
"channel": "Default" }}}}}
vivo消息分类功能将推送消息类型分为运营消息和系统消息,默认下发运营消息。运营消息单用户单应用单日接收条数上限为5条,系统消息不限。系统消息功能不用申请,可以直接使用,如特殊情况需额外提升系统消息量级,请参见vivo推送消息分类功能说明。
个推侧设置vivo消息分类示例如下:
{
"android": {
"ups": {
"notification": {
// ...其他push_channel参数略
},
"options": {
"VV": {
"classification": 0 }}}}}
注意:上述具体个推侧服务端设置的字段解释可参考RestAPI V2中多厂商参数部分。
详见:是否支持海外推送
个推在线消息
离线厂商消息
小米:
铃声文件放在客户端app/raw目录下。
离线自定义铃声只在channel通道中起作用,因此需要在小米平台上创建channel通道,设置自定义铃声前端路径如:android.resource://com.tuisongdemo/raw/test(路径不需要带音频后缀名)如图
"options": {
"XM": {
"channel": "10002"}}
华为:
华为EMUI版本及推送服务版本要求 10.0.0 以上
铃声文件放在客户端app/raw目录下,支持mp3、wav、mpeg等
离线自定义铃声只在channel通道中起作用,服务端需在push_channel中对应设置华为相关设置。
"options": {
"HW": {
"/message/android/notification/importance": "NORMAL",
"/message/android/notification/default_sound": false,
"/message/android/notification/channel_id": "RingRing",
"/message/android/notification/sound": "/raw/video_call_ring"}}
这是华为侧的消息控制:EMUI10系统上云端推送通知根据消息重要性,分成三个级别:一般、重要、非常重要。对应不同消息级别,会有不同的消息呈现样式。具体说明请参考华为官方消息分类文档
个推侧服务端Rest-V2代码设置示例
"options": {
"HW": {
"/message/android/notification/importance": "HIGH",
}
}
注意:该设置项不能直接决定消息分类,华为侧还是会通过消息体判断去划分,最终是以华为侧的划分为准。请尽量不要推送测试性消息,同样消息体也不要频繁重复推送
oppo/魅族,部分手机系统上能设置角标圆点,没有数字角标的功能。
小米系统自带离线通知数字角标展示功能,默认+1处理,打开清零。
vivo高版本系统自带离线通知数字角标展示功能,默认+1处理,打开清零,低版本没有角标功能。
华为角标需服务端api进行字段设置,客户端需要手动设置角标数为0
add方式支持版本: EMUI版本8.0.0且推送服务应用版本 8.0.0及以上
服务端Rest-v2设置示例
"options": {
"HW": {
"/message/android/notification/badge/class": "应用入口Activity路径名称",
"/message/android/notification/badge/add_num": 1,
}
}
OPPO平台的mastersecret参数需要在应用通过推送审核后,使用主账号在oppo推送平台-配置管理-应用配置 页面查看。
目前有许多客户在Android 5.0系统上接入个推SDK时,会发现如果其他集成个推SDK的应用已经安装在手机,此应用就不能再安装上去,会出现权限冲突。报错信息如下:
STALL_FAILED_DUPLICATE_PERMISSION perm=getui.permission.GetuiService pkg=你的应用包名]
对此个推对权限配置做了如下修改
<permission
android:name="getui.permission.GetuiService.你的应用包名"
android:protectionLevel="normal" >
以上文档对您是否有帮助?