1.问题
为什么调用cloudpushservice.register之后获取deviceId,却发现deviceId为空,这是什么原因曹成的?
2.问题原因
推送SDK在注册的过程中需要将设备相关信息(appKey,appSecret,包名,设备号等)上报服务端,只有上报成功后服务端才会下发deviceId。如果发现deviceId为空,可能有两个原因:
- 推送初始化失败,此时可通过onFailed回调查看相关错误信息
初始化未完成,推送初始化存在异步操作,在初始化未完成时是无法获取到deviceId的
3.解决方案
在CloudPushService.register的成功回调中获取deviceId,请参考下述代码:
-
[backcolor=transparent]
pushService[backcolor=transparent]
.[backcolor=transparent]
register[backcolor=transparent]
([backcolor=transparent]
applicationContext[backcolor=transparent]
,[backcolor=transparent]
[backcolor=transparent]
new[backcolor=transparent]
[backcolor=transparent]
CommonCallback[backcolor=transparent]
()[backcolor=transparent]
[backcolor=transparent]
{
- [backcolor=transparent] [backcolor=transparent]@Override
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] onSuccess[backcolor=transparent]([backcolor=transparent]String[backcolor=transparent] response[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]Log[backcolor=transparent].[backcolor=transparent]i[backcolor=transparent]([backcolor=transparent]TAG[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"init CloudPushService success, device id: "[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] pushService[backcolor=transparent].[backcolor=transparent]getDeviceId[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent]", Appkey: "[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]AmsGlobalHolder[backcolor=transparent].[backcolor=transparent]getAppMetaData[backcolor=transparent]([backcolor=transparent]"com.alibaba.app.appkey"[backcolor=transparent]));
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]@Override
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] onFailed[backcolor=transparent]([backcolor=transparent]String[backcolor=transparent] errorCode[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]String[backcolor=transparent] errorMessage[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]Log[backcolor=transparent].[backcolor=transparent]d[backcolor=transparent]([backcolor=transparent]TAG[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"init CloudPushService failed. errorcode: "[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] errorCode [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]", errorMessage: "[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] errorMessage [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]", deviceId:"[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] pushService[backcolor=transparent].[backcolor=transparent]getDeviceId[backcolor=transparent]());
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent]});