开发者社区> 问答> 正文

我调用了cloudpushservice.register后获取deviceId发现deviceId是空的是什么原因?



1.问题


为什么调用cloudpushservice.register之后获取deviceId,却发现deviceId为空,这是什么原因曹成的?

2.问题原因


推送SDK在注册的过程中需要将设备相关信息(appKey,appSecret,包名,设备号等)上报服务端,只有上报成功后服务端才会下发deviceId。如果发现deviceId为空,可能有两个原因:

  • 推送初始化失败,此时可通过onFailed回调查看相关错误信息

  • 初始化未完成,推送初始化存在异步操作,在初始化未完成时是无法获取到deviceId的

    3.解决方案


    在CloudPushService.register的成功回调中获取deviceId,请参考下述代码:
    1. [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] {
    2. [backcolor=transparent]    [backcolor=transparent]@Override
    3. [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]{
    4. [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]));
    5. [backcolor=transparent]  [backcolor=transparent]}
    6. [backcolor=transparent]    [backcolor=transparent]@Override
    7. [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]{
    8. [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]());
    9. [backcolor=transparent]    [backcolor=transparent]}
    10. [backcolor=transparent]});

展开
收起
猫饭先生 2017-10-23 14:11:14 3007 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载