为什么调用cloudpushservice.register之后获取deviceId,却发现deviceId为空,这是什么原因造成的?
问题原因
推送SDK在注册的过程中需要将设备相关信息(appKey,appSecret,包名,设备号等)上报服务端,只有上报成功后服务端才会下发deviceId。如果发现deviceId为空,可能有两个原因:
推送初始化失败,此时可通过onFailed回调查看相关错误信息。 初始化未完成,推送初始化存在异步操作,在初始化未完成时是无法获取到deviceId的。
解决方案 在CloudPushService.register的成功回调中获取deviceId,请参考下述代码:
pushService.register(applicationContext, new CommonCallback() {
@Override
public void onSuccess(String response) {
Log.i(TAG, "init CloudPushService success, device id: " + pushService.getDeviceId() +", Appkey: " + AmsGlobalHolder.getAppMetaData("com.alibaba.app.appkey"));
}
@Override
public void onFailed(String errorCode, String errorMessage) {
Log.d(TAG, "init CloudPushService failed. errorcode: " + errorCode + ", errorMessage: " + errorMessage + ", deviceId:" + pushService.getDeviceId());
}
});
更多官方信息
EMAS官网介绍:https://www.aliyun.com/product/emas
Devops:https://www.aliyun.com/product/emascrash/mobile_devops
移动热修复:https://www.aliyun.com/product/hotfix
移动测试:https://www.aliyun.com/activity/emas/mqcexpert
移动推送:https://www.aliyun.com/product/cps
HTTPDNS:https://www.aliyun.com/product/httpdns
EMAS 控制台: https://emas.console.aliyun.com/products
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。