全部产品
云市场

移动推送Android SDK:我调用了cloudpushservice.register后获取deviceId,发现deviceId是空的,是什么原因?

更新时间:2017-06-07 13:26:11

1.问题

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

2.问题原因

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

  • 推送初始化失败,此时可通过onFailed回调查看相关错误信息
  • 初始化未完成,推送初始化存在异步操作,在初始化未完成时是无法获取到deviceId的

    3.解决方案

    在CloudPushService.register的成功回调中获取deviceId,请参考下述代码:

    1. pushService.register(applicationContext, new CommonCallback() {
    2. @Override
    3. public void onSuccess(String response) {
    4. Log.i(TAG, "init CloudPushService success, device id: " + pushService.getDeviceId() +", Appkey: " + AmsGlobalHolder.getAppMetaData("com.alibaba.app.appkey"));
    5. }
    6. @Override
    7. public void onFailed(String errorCode, String errorMessage) {
    8. Log.d(TAG, "init CloudPushService failed. errorcode: " + errorCode + ", errorMessage: " + errorMessage + ", deviceId:" + pushService.getDeviceId());
    9. }
    10. });