开发者社区 问答 正文

Android SDK 3.0配置如何实现?(4)



3.6. 在应用中注册和启动移动推送

  • 首先通过PushServiceFactory获取到CloudPushService,然后调用register()初始化并注册云推送通道,并确保Application上下文中进行初始化工作。
  • 请参照以下代码段进行初始化:
  1. [backcolor=transparent]import[backcolor=transparent] android[backcolor=transparent].[backcolor=transparent]app[backcolor=transparent].[backcolor=transparent]Application[backcolor=transparent];
  2. [backcolor=transparent]import[backcolor=transparent] android[backcolor=transparent].[backcolor=transparent]content[backcolor=transparent].[backcolor=transparent]Context[backcolor=transparent];
  3. [backcolor=transparent]import[backcolor=transparent] android[backcolor=transparent].[backcolor=transparent]util[backcolor=transparent].[backcolor=transparent]Log[backcolor=transparent];
  4. [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];
  5. [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];
  6. [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];
  7. [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];
  8. [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]{
  9. [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];
  10. [backcolor=transparent]    [backcolor=transparent]@Override
  11. [backcolor=transparent]    [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] onCreate[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]{
  12. [backcolor=transparent]        [backcolor=transparent]super[backcolor=transparent].[backcolor=transparent]onCreate[backcolor=transparent]();
  13. [backcolor=transparent]        initCloudChannel[backcolor=transparent]([backcolor=transparent]this[backcolor=transparent]);
  14. [backcolor=transparent]    [backcolor=transparent]}
  15. [backcolor=transparent]    [backcolor=transparent]/**
  16. [backcolor=transparent]     * 初始化云推送通道
  17. [backcolor=transparent]     * @param applicationContext
  18. [backcolor=transparent]     */
  19. [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]{
  20. [backcolor=transparent]        [backcolor=transparent]PushServiceFactory[backcolor=transparent].[backcolor=transparent]init[backcolor=transparent]([backcolor=transparent]applicationContext[backcolor=transparent]);
  21. [backcolor=transparent]        [backcolor=transparent]CloudPushService[backcolor=transparent] pushService [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]PushServiceFactory[backcolor=transparent].[backcolor=transparent]getCloudPushService[backcolor=transparent]();
  22. [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]{
  23. [backcolor=transparent]            [backcolor=transparent]@Override
  24. [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]{
  25. [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]);
  26. [backcolor=transparent]            [backcolor=transparent]}
  27. [backcolor=transparent]            [backcolor=transparent]@Override
  28. [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]{
  29. [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]);
  30. [backcolor=transparent]            [backcolor=transparent]}
  31. [backcolor=transparent]        [backcolor=transparent]});
  32. [backcolor=transparent]    [backcolor=transparent]}
  33. [backcolor=transparent]}

【注意】:
  • 移动推送的初始化必须在Application中,不能放到Activity中执行。移动推送在初始化过程中将启动后台进程channel,必须保证应用进程和channel进程都执行到推送初始化代码。
  • 如果设备成功注册,将回调callback.onSuccess()方法。
  • 但如果注册服务器连接失败,则调用callback.onFailed方法,并且自动进行重新注册,直到onSuccess为止。(重试规则会由网络切换等时间自动触发。)
  • 请在网络通畅的情况下进行相关的初始化调试,如果网络不通,或者App信息配置错误,在onFailed方法中,会有相应的错误码返回,可参考错误处理

启动正常确认方法:
  • 回调方法callback.onSuccess()被调用。以上文接入代码为例,logcat将会打印以下日志:
  1. [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关键字:
  1. [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
  2. [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

展开
收起
猫饭先生 2017-10-23 10:56:36 1449 分享 版权
0 条回答
写回答
取消 提交回答