Android SDK 3.0配置如何实现?(4)
3.6. 在应用中注册和启动移动推送
- 首先通过PushServiceFactory获取到CloudPushService,然后调用register()初始化并注册云推送通道,并确保Application上下文中进行初始化工作。
- 请参照以下代码段进行初始化:
- [backcolor=transparent]import[backcolor=transparent] android[backcolor=transparent].[backcolor=transparent]app[backcolor=transparent].[backcolor=transparent]Application[backcolor=transparent];
- [backcolor=transparent]import[backcolor=transparent] android[backcolor=transparent].[backcolor=transparent]content[backcolor=transparent].[backcolor=transparent]Context[backcolor=transparent];
- [backcolor=transparent]import[backcolor=transparent] android[backcolor=transparent].[backcolor=transparent]util[backcolor=transparent].[backcolor=transparent]Log[backcolor=transparent];
- [backcolor=transparent]import[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]sdk[backcolor=transparent].[backcolor=transparent]android[backcolor=transparent].[backcolor=transparent]callback[backcolor=transparent].[backcolor=transparent]InitResultCallback[backcolor=transparent];
- [backcolor=transparent]import[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]sdk[backcolor=transparent].[backcolor=transparent]android[backcolor=transparent].[backcolor=transparent]push[backcolor=transparent].[backcolor=transparent]CloudPushService[backcolor=transparent];
- [backcolor=transparent]import[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]sdk[backcolor=transparent].[backcolor=transparent]android[backcolor=transparent].[backcolor=transparent]push[backcolor=transparent].[backcolor=transparent]CommonCallback[backcolor=transparent];
- [backcolor=transparent]import[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]sdk[backcolor=transparent].[backcolor=transparent]android[backcolor=transparent].[backcolor=transparent]push[backcolor=transparent].[backcolor=transparent]noonesdk[backcolor=transparent].[backcolor=transparent]PushServiceFactory[backcolor=transparent];
- [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]class[backcolor=transparent] [backcolor=transparent]MainApplication[backcolor=transparent] [backcolor=transparent]extends[backcolor=transparent] [backcolor=transparent]Application[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]private[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]String[backcolor=transparent] TAG [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]"Init"[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]@Override
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] onCreate[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]super[backcolor=transparent].[backcolor=transparent]onCreate[backcolor=transparent]();
- [backcolor=transparent] initCloudChannel[backcolor=transparent]([backcolor=transparent]this[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]/**
- [backcolor=transparent] * 初始化云推送通道
- [backcolor=transparent] * @param applicationContext
- [backcolor=transparent] */
- [backcolor=transparent] [backcolor=transparent]private[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] initCloudChannel[backcolor=transparent]([backcolor=transparent]Context[backcolor=transparent] applicationContext[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]PushServiceFactory[backcolor=transparent].[backcolor=transparent]init[backcolor=transparent]([backcolor=transparent]applicationContext[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]CloudPushService[backcolor=transparent] pushService [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]PushServiceFactory[backcolor=transparent].[backcolor=transparent]getCloudPushService[backcolor=transparent]();
- [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]d[backcolor=transparent]([backcolor=transparent]TAG[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"init cloudchannel success"[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 cloudchannel 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]}
- [backcolor=transparent] [backcolor=transparent]});
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent]}
【注意】:
- 移动推送的初始化必须在Application中,不能放到Activity中执行。移动推送在初始化过程中将启动后台进程channel,必须保证应用进程和channel进程都执行到推送初始化代码。
- 如果设备成功注册,将回调callback.onSuccess()方法。
- 但如果注册服务器连接失败,则调用callback.onFailed方法,并且自动进行重新注册,直到onSuccess为止。(重试规则会由网络切换等时间自动触发。)
- 请在网络通畅的情况下进行相关的初始化调试,如果网络不通,或者App信息配置错误,在onFailed方法中,会有相应的错误码返回,可参考错误处理。
启动正常确认方法:
- 回调方法callback.onSuccess()被调用。以上文接入代码为例,logcat将会打印以下日志:
- [backcolor=transparent]11[backcolor=transparent]-[backcolor=transparent]24[backcolor=transparent] [backcolor=transparent]12[backcolor=transparent]:[backcolor=transparent]55[backcolor=transparent]:[backcolor=transparent]51.096[backcolor=transparent] [backcolor=transparent]15235[backcolor=transparent]-[backcolor=transparent]15535[backcolor=transparent]/[backcolor=transparent]com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]xxxx D[backcolor=transparent]/[backcolor=transparent]YourApp[backcolor=transparent]﹕[backcolor=transparent] init cloudchannel success
- 确认cloudchannel初始化正常,在logcat日志中:输入awcn关键字:
- [backcolor=transparent]11[backcolor=transparent]-[backcolor=transparent]24[backcolor=transparent] [backcolor=transparent]12[backcolor=transparent]:[backcolor=transparent]53[backcolor=transparent]:[backcolor=transparent]51.036[backcolor=transparent] [backcolor=transparent]15235[backcolor=transparent]-[backcolor=transparent]15556[backcolor=transparent]/[backcolor=transparent]com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]xxxx E[backcolor=transparent]/[backcolor=transparent]awcn[backcolor=transparent]﹕[backcolor=transparent] [backcolor=transparent]|[[backcolor=transparent]seq[backcolor=transparent]:[backcolor=transparent]AWCN1_1[backcolor=transparent]][backcolor=transparent] AUTH httpStatusCode[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]200
- [backcolor=transparent]11[backcolor=transparent]-[backcolor=transparent]24[backcolor=transparent] [backcolor=transparent]12[backcolor=transparent]:[backcolor=transparent]53[backcolor=transparent]:[backcolor=transparent]51.036[backcolor=transparent] [backcolor=transparent]15235[backcolor=transparent]-[backcolor=transparent]15556[backcolor=transparent]/[backcolor=transparent]com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]xxxx E[backcolor=transparent]/[backcolor=transparent]awcn[backcolor=transparent]﹕[backcolor=transparent] [backcolor=transparent]|[[backcolor=transparent]seq[backcolor=transparent]:[backcolor=transparent]AWCN1_1[backcolor=transparent]][backcolor=transparent] status[backcolor=transparent]:[backcolor=transparent]AUTH_SUCC
确认DeviceId获取正常:在初始化成功后使用 cloudPushService.getDeviceId() 获取deviceId,应该能够成功获取。
如果集成移动推送的过程中遇到了utdid冲突,可参考:阿里云-移动云产品SDK UTDID冲突解决方案
收起
猫饭先生
2017-10-23 10:56:36
1449
分享
版权