public void onReceiveClientId(Context context, String clientid) {
Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);}
厂商应用开通指南:https://docs.getui.com/getui/mobile/vendor/vendor_open/
厂商sdk集成指南:https://docs.getui.com/getui/mobile/vendor/androidstudio/
确认CID是否绑定devicetoken
在【消息推送】-【配置管理】-【故障排查】-【 检测CID的状态及信息:】中输入CID查询,看是否会返回devicetoken。
检查手机连接的网络是否正常,尝试切换网络。
检查手机相关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);
}
});
若未返回任何带有厂商标识的日志,说明厂商推送服务还未置于您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 是否匹配 |
在Xcode的origanizer->device选择你的设置,然后在console.app(控制台.app)里查看日志,会输出如下:client:a38dbe81c7bbfb93824*****2d5fec4f
;或者在客户端CID回调中获取如下:
/// [ GTSDK回调 ] SDK启动成功返回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。"
检查手机连接的网络是否正常,尝试切换网络;
根据客户端集成文档依次检查集成配置等步骤;
使用个推SDK Demo测试,如果能正常获取,可以对照看下。
安卓:
ios:
个推Appid参数、应用的包名、苹果Bundleid的修改。
苹果手机则是进行了越狱或系统还原。
注意:系统升级,应用覆盖安装,CID不会变。
安卓:
华为:清除应用数据(例如卸载应用并重新安装、设备恢复出厂设置等)后重新打开应用。链接
小米:如果SDK没有从本地读取到缓存的regID,应用卸载重装或者清除应用本地数据,regID就会变化;小米推送sdk会向服务端重新请求,此时regID会重新生成。链接
oppo: 1)应用卸载后出现安装 ;2)恢复出厂设置 ;3)系统双清 。链接
vivo: 手机14天不联网或应用卸载会触发解订阅与设备解除订阅关系,regId失效。解订阅再重新订阅会重新启用这个regId,异常情况下会生成新的regId。链接
魅族:手机卸载了 App 或者 App 不活跃一个月。 链接
ios:
应用卸载重装;
bundle id改变;
手机越狱或系统还原;
debug和relelse环境切换;
注意:应用覆盖安装,devicetoken不会变。
安卓:
华为:设备超过30天没有联网,会定义为沉默设备,沉默设备无法接收推送消息。跟应用是否活跃没有关系。 链接
小米:
1)app卸载重装或者清除数据后重新注册,这种情况下会生成一个新的regID,而老的regID会失效;
2)在MIUI上,app卸载时,如果能成功上报,则regID会被判定失效;
3)设备超过3个月没有和小米push服务器建立长连接;
oppo: 在用户设备刷机、卸载应用、或设备长时间(超过30天)无连接时失效。 链接
vivo: 超过14天都没有和vivo服务器建立过长连接,则会判定ID失效;应用卸载或者关闭了通知,90天不联网 regid也会无效。链接
魅族:手机卸载了 App 或者 App 不活跃一个月。 链接
ios:
系统注销或者是应用被卸载
用户在新的设备上安装app
用户从backup中恢复设备
iOS大版本升级
关闭打开推送