CID需要由客户端获取并自行记录,安卓获取方式如下,初始化个推SDK后在自定义IntentService 服务中获取。
public void onReceiveClientId(Context context, String clientid) {
Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);}
devicetoken安卓获取方式如下,集成配置完厂商应用信息和sdk,个推侧sdk会注册厂商推送服务,获取到厂商推送服务注册id,即devicetoken。并且个推侧客户端sdk会处理好cid和devicetoken的绑定关系。
厂商应用开通指南:https://docs.getui.com/getui/mobile/vendor/vendor_open/
厂商sdk集成指南:https://docs.getui.com/getui/mobile/vendor/androidstudio/
确认CID是否绑定devicetoken
在【消息推送】-【配置管理】-【故障排查】-【 检测CID的状态及信息:】中输入CID查询,看是否会返回devicetoken。
2、安卓获取不到ClientID
检查手机连接的网络是否正常,尝试切换网络。
检查手机相关LOG日志开关是否打开,打包是否有屏蔽日志输出。
检查pushservice进程有没有起来,即初始化个推是否正常。
没有自定义pushservice【一加手机、魅族设备居多】;
根据客户端集成文档依次检查集成配置等步骤,并开启debug模式进行排查。
IntentService类的onReceiveClientId方法里面获取回调的clientId,getClientid接口是获取缓存里面的clientId,首次启动可能会获取不到;
查看PushManager 方法 setDebugLogger 回调集成日志是否正常。
在 Application 的 onCreate 中添加以下代码:
com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
@Override
public void log(String s) {
Log.i("PUSH_LOG",s);
3、Android获取不到厂商devicetoken
手机连接电脑,手机需开启开发者调试模式,打开APP,在androidstudio编译器logcat中过滤"Assist_",若成功打印token信息则表示厂商集成正常;
若未返回任何带有厂商标识的日志,说明厂商推送服务还未置于您App应用内,请重新检查客户端厂商集成相关步骤;
若返回了厂商标识日志,则注意查看返回的厂商Code码,如下示例:
请确认手机中安装有应用 “华为移动服务” 或 “HMS-Core”
前往华为应用商店下载安装应用 “HMS-Core”
应用 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 是否匹配
无效的 AppKey 参数
客户端需要的是OPPO 的 AppKey和APPSECRET
缺少 AppKey 参数
补充 AppKey 参数
无效的 AppKey 参数
客户端需要的是OPPO 的 AppKey和APPSECRET,检查配置是否正确
10003
App 包名与配置不匹配
前往 vivo 推送平台检查应用的包名、appId、appKey 是否匹配
10004
appkey 不匹配
前往 vivo 推送平台检查应用的包名、appId、appKey 是否匹配
10005
appid传入错误
前往 vivo 推送平台检查应用的包名、appId、appKey 是否匹配
1、iOS的ClientID,deviceToken如何获取?
在Xcode的origanizer->device选择你的设置,然后在console.app(控制台.app)里查看日志,会输出如下:client:a38dbe81c7bbfb93824*****2d5fec4f
;或者在客户端CID回调中获取如下:
- (void)GeTuiSdkDidRegisterClient:(NSString *)clientId {
NSLog(@"[ TestDemo ] [GTSdk RegisterClient]:%@", clientId);
sdk>=2.5.2.0版本,是需要使用个推注册远程通知权限,个推内部自动获取devicetoken并上报,开发者若想拿到devicetoken仍可以通过苹果原生回调api去获得。
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
需要注意的是devicetoken从苹果那边获取到后是有空格区分的,需要把空格去掉。
苹果上报token规则:
需要下载应用后,首次打开应用通知权限才会上报devicetoken,后续每隔12小时会重新上报1次;
如果首次关闭应用通知权限则不会上报devicetoken。"
2、iOS获取不到clientId
检查手机连接的网络是否正常,尝试切换网络;
根据客户端集成文档依次检查集成配置等步骤;
使用个推SDK Demo测试,如果能正常获取,可以对照看下。
3、iOS获取不到devicetoken
证书问题(检查证书的是否有效);
设置中没有打开通知开关(在配置里查看,是否允许通知);
没有支持注册远程通知权限,可使用个推SDK Demo测试,如果能正常获取,可以对照看下。
用真机测试,不能使用xcode模拟器测试。
切换4G网络测试;
重启手机;
打正式包测试。
三、关于cid和devicetoken的其他问题
1、cid和devicetoken的关系
cid和devicetoken都没变的情况下,每天打开app初始化gtsdk时会重新绑定;
cid或者devicetoken有变化,只要打开app初始化gtsdk就会重新绑定;
2、CID什么情况下会变
appid参数替换,应用的包名修改;
用户超过三个月未登录,CID会置为无效CID,若再次登录会重新生成一个CID;
如果应用没有获取sd卡权限,卸载重装/清除缓存,CID会变(CID信息会写入sd卡)。
个推Appid参数、应用的包名、苹果Bundleid的修改。
苹果手机则是进行了越狱或系统还原。
用户cid超过一年未联网,cid会置为无效cid,重新联网会生成一个新的cid;
注意:系统升级,应用覆盖安装,CID不会变。
3、devicetoken什么情况下会变化
华为:清除应用数据(例如卸载应用并重新安装、设备恢复出厂设置等)后重新打开应用。链接
小米:如果SDK没有从本地读取到缓存的regID,应用卸载重装或者清除应用本地数据,regID就会变化;小米推送sdk会向服务端重新请求,此时regID会重新生成。链接
oppo: 1)应用卸载后出现安装 ;2)恢复出厂设置 ;3)系统双清 。链接
vivo: 手机14天不联网或应用卸载会触发解订阅与设备解除订阅关系,regId失效。解订阅再重新订阅会重新启用这个regId,异常情况下会生成新的regId。链接
魅族:手机卸载了 App 或者 App 不活跃一个月。 链接
应用卸载重装;
bundle id改变;
手机越狱或系统还原;
debug和relelse环境切换;
注意:应用覆盖安装,devicetoken不会变。
4、devicetoken什么情况下会失效
华为:设备超过30天没有联网,会定义为沉默设备,沉默设备无法接收推送消息。跟应用是否活跃没有关系。 链接
1)app卸载重装或者清除数据后重新注册,这种情况下会生成一个新的regID,而老的regID会失效;
2)在MIUI上,app卸载时,如果能成功上报,则regID会被判定失效;
3)设备超过3个月没有和小米push服务器建立长连接;
oppo: 在用户设备刷机、卸载应用、或设备长时间(超过30天)无连接时失效。 链接
vivo: 超过14天都没有和vivo服务器建立过长连接,则会判定ID失效;应用卸载或者关闭了通知,90天不联网 regid也会无效。链接
魅族:手机卸载了 App 或者 App 不活跃一个月。 链接
系统注销或者是应用被卸载
用户在新的设备上安装app
用户从backup中恢复设备
iOS大版本升级
关闭打开推送
5、iOS推送证书切换后生效时间
如果是同环境证书切换(开发环境证书换开发环境),证书更换后1分钟左右生效 ;
不同环境证书切换,正常也是3分钟左右生效;
如果切换后拿devicetoken测试返回可用,但是通过个推推送收不到消息,可以将应用卸载重装一下,这样cid和devicetoken会重新绑定;