全部产品
云市场

Android 常见问题

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

 

Q1:我能否在MainActivity中调用cloudpushservice.register?在调用register接口以后,如何知道我注册成功还是失败了,失败的原因是什么?

必须在Application中调用cloudpushservice.register,而不要在Activity中调用。在Activity中调用,将无法有效启动推送的幽灵进程,会大大减少消息的到达率。另外,在未来,我们不确保你使用Activity启动的推送功能会是正常的。
 
在调用register接口时,你可以传入一个回调对象,即com.alibaba.sdk.android.push.CommonCallback,如果注册成功,及一次性回调CommonCallback.onSuccess,如果注册失败,会回调onFailed,启动带有错误码和错误信息。错误回调之后,我们会重试注册,并用相同的对象,继续给到你回调结果。
(所以错误回调,会有多次,不断重试,直到最后一次成功回调为止。)
失败的原因请参考 错误码列表。
 

Q2:调用一次cloudpushservice.register会有多次回调,是什么意思?如果register失败,我是否需要重试?

同问题1,注册失败之后,SDK会自动重新进行注册。所以你不需要在代码中重试,只需要等待onSuccess回调即可。
 

Q3:注册/鉴权失败(1056)的错误码是什么意思,我如何解决鉴权失败的问题?

鉴权失败的可能性有以下几个:
- appKey不正确
- appsecert不正确
 

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

调用cloudpushservice.register如不能正常获取DeviceId则说明注册没有成功,请重新获取到正确的cloudpushservice.register返回码以后,在使用cloudpushservice.getDeviceId方法获取。
 

Q5:我注册成功了,但是收不到推送的消息,我该如何去排查?

- 检查的的MessageReceiver是否在manifest中正确配置声明了。(以及根据快速配置手册,检查其他manifest配置是否正常)
- 检查你在服务端推送的是否是通知,如果是推送通知应该直接弹出;如果推送的是消息,是否有在复写方法onMessage中产生回调。
- 如果以上都正确,请打开debug日志,并在日志筛选中查找AgooFactory标签,看是否有接收到消息的日志展示。
     - 如果没有相应消息展示,请检查服务器端配置是否正确。或咨询服务端客服。
     - 如果有相应消息展示,请咨询客户端客服。
 

Q6:我继承了MessageReceiver接口,但是仍然收不到消息,怎么排查?

- 首先,你需要覆盖正确的接口方法。接口方法说明 请参照 API手册。
- 其次,确认你的Manifest中正确地注册了你自己的MessageReceiver 请参 照快速接入手册。
- 最后,确认你的MessageReceiver正常启动,并且能够收到其他的消息,方法为:
  - 打开debuglog
  - 切换网络状态(比如关闭wifi以后在打开)
  - 查看关键字AgooMessageReceiver,看一下是否接收到相关网络事件。
- 如果你连网络切换事件也无法收到,请检查本地Manifest及相关工程配置是否正确。如果你能收到网络事件,却无法收到推送事件,请检查服务器端配置,以及覆盖的方法是否正确。
如果以上配置都正确,可人工咨询SDK相关问题。
 

Q7:如何更有效地咨询SDK相关的问题?

在你的应用中加入debuglog,CloudPushService提供接口setLogLevel(logLevel)设置日志等级,logLevel等级定义ERROR = 0; INFO = 1; DEBUG = 2。