閱讀702 返回首頁    go 阿裏雲


Android SDK配置__Android SDK手冊_App SDK 手冊_移動推送-阿裏雲

使用前必讀:移動推送名詞解釋&約束

1. 創建應用

到阿裏雲移動推送控製台創建應用,應用創建完成以後,進入移動推送相關模塊進行設置,具體操作請參見 創建APP

在應用中完成應用配置,請注意PackageName務必和App的包名一致,否則推送將無法正確初始化。

【注意】使用Gradle構建App時,PackageName的查看:

  • 查看AndroidManifest.xml中根元素package屬性;
  • 查看工程build.gradle中applicationId設置,默認AndroidManifest.xml中的package屬性保持一致,如果不一致,以applicationId為準。

配置

2. SDK下載和集成

2.1 SDK下載

Android-SDK-Download

2.2 SDK目錄結構

  1. OneSDK
  2. |-- AndroidManifest.xml
  3. |-- build.gradle
  4. |-- libs
  5. | |-- armeabi
  6. | | |-- libcocklogic.so -網絡連接庫及幽靈進程的輔助lib
  7. | | |-- libtnet.so
  8. | |-- armeabi-v7a
  9. | | |-- libcocklogic.so
  10. | | |-- libtnet.so
  11. | |-- arm64-v8a
  12. | | |-- libcocklogic.so
  13. | | |-- libtnet.so
  14. | |-- x86
  15. | | |-- libcocklogic.so
  16. | | |-- libtnet.so
  17. | |-- arm64
  18. | | |-- libcocklogic.so
  19. | | |-- libtnet.so
  20. | |-- alicloud-android-push-sdk.jar -移動推送主功能包
  21. | |-- alisdk-ut.jar -UT基礎包
  22. | |-- utdid4all.jar -設備Id生成包
  23. |-- project.properties
  24. |-- src

2.3 SDK集成:

  1. android {
  2. ...
  3. sourceSets {
  4. main {
  5. jniLibs.srcDirs = ['libs']
  6. }
  7. }
  8. }

3. 配置AndroidManifest.xml

3.1 appkey和appsecret配置

  1. <application android:name="*****">
  2. <meta-data android:name="com.alibaba.app.appkey" android:value="*****"/> <!-- 請填寫你自己的- appKey -->
  3. <meta-data android:name="com.alibaba.app.appsecret" android:value="****"/> <!-- 請填寫你自己的appSecret -->
  4. </application>

com.alibaba.app.appkeycom.alibaba.app.appsecret為您App的對應信息,在推送控製台APP列表頁的應用證書中獲取。appkey和appsecret請務必寫在application標簽下,否則sdk會報找不到appkey錯誤。

3.2 Permission 的配置


  • 將以下uses-permission片段拷貝進你manifest中的Permission申明區域中:
  1. <!--阿裏移動推送相關權限-->
  2. <!--Android 6.0版本可去除,用於選舉信息(通道複用)的同步-->
  3. <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  4. <!--進行網絡訪問和網絡狀態監控相關的權限聲明-->
  5. <uses-permission android:name="android.permission.INTERNET" />
  6. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  7. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  8. <!--允許對sd卡進行讀寫操作-->
  9. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  10. <!--網絡庫使用,當網絡操作時需要確保事務完成不被殺掉-->
  11. <uses-permission android:name="android.permission.WAKE_LOCK" />
  12. <!--用於讀取手機硬件信息等,用於機型過濾-->
  13. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  14. <!--選舉使用,當應用有刪除或者更新時需要重新選舉,複用推送通道-->
  15. <uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED" />
  16. <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" />
  17. <uses-permission android:name="android.permission.RESTART_PACKAGES" />
  18. <!--補償通道小米PUSH使用,不用可去除-->
  19. <uses-permission android:name="android.permission.GET_TASKS" />
  20. <!--補償通道GCM使用,不使用可去除-->
  21. <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  22. <!--允許監聽啟動完成事件-->
  23. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  24. <!--允許訪問震動器-->
  25. <uses-permission android:name="android.permission.VIBRATE" />
  26. <!-- 允許task重排序 -->
  27. <uses-permission android:name="android.permission.REORDER_TASKS" />

3.3 Service 的配置


  • 將以下service片段拷貝進你Manifest中的service申明區域中:
  1. <!-- 通道保持服務 -->
  2. <service android:name="com.alibaba.sdk.android.push.ChannelService"
  3. android:exported="true" android:process=":channel">
  4. <intent-filter>
  5. <action android:name="com.taobao.accs.intent.action.SERVICE"/>
  6. </intent-filter>
  7. <intent-filter>
  8. <action android:name="org.agoo.android.intent.action.PING_V4" />
  9. <category android:name="taobao" />
  10. </intent-filter>
  11. </service>
  12. <!-- 消息接收服務 -->
  13. <service android:name="com.alibaba.sdk.android.push.MsgService"
  14. android:exported="false">
  15. <intent-filter>
  16. <action android:name="com.taobao.accs.intent.action.RECEIVE" />
  17. </intent-filter>
  18. <intent-filter>
  19. <action android:name="com.alibaba.sdk.android.push.NOTIFY_ACTION" />
  20. </intent-filter>
  21. </service>
  22. <!-- 消息接收增強服務(可提高通知/消息達到率)-->
  23. <service android:name="com.alibaba.sdk.android.push.channel.TaobaoRecvService" android:exported="true">
  24. <intent-filter>
  25. <action android:name="org.android.agoo.client.MessageReceiverService"/>
  26. </intent-filter>
  27. </service>

3.4 Receiver 的配置


將以下receiver片段拷貝進你manifest中的receiver申明區域中:

  1. <!--消息接收監聽器-->
  2. <receiver android:name="com.alibaba.sdk.android.push.MessageReceiver">
  3. <intent-filter>
  4. <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/>
  5. </intent-filter>
  6. <intent-filter>
  7. <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED"/>
  8. </intent-filter>
  9. <intent-filter>
  10. <action android:name="com.taobao.accs.intent.action.COMMAND" />
  11. </intent-filter>
  12. <intent-filter>
  13. <action android:name="com.taobao.taobao.intent.action.COMMAND" />
  14. </intent-filter>
  15. <intent-filter>
  16. <action android:name="org.agoo.android.intent.action.RECEIVE" />
  17. </intent-filter>
  18. <intent-filter>
  19. <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
  20. </intent-filter>
  21. <intent-filter>
  22. <action android:name="android.intent.action.USER_PRESENT" />
  23. </intent-filter>
  24. <intent-filter>
  25. <action android:name="android.intent.action.BOOT_COMPLETED"/>
  26. </intent-filter>
  27. <intent-filter>
  28. <action android:name="android.intent.action.PACKAGE_REMOVED"/>
  29. <data android:scheme="package"/>
  30. </intent-filter>
  31. </receiver>

4. Proguard配置

  1. -keepclasseswithmembernames class ** {
  2. native <methods>;
  3. }
  4. -keepattributes Signature
  5. -keep class sun.misc.Unsafe { *; }
  6. -keep class com.taobao.** {*;}
  7. -keep class com.alibaba.** {*;}
  8. -keep class com.alipay.** {*;}
  9. -dontwarn com.taobao.**
  10. -dontwarn com.alibaba.**
  11. -dontwarn com.alipay.**
  12. -keep class com.ut.** {*;}
  13. -dontwarn com.ut.**
  14. -keep class com.ta.** {*;}
  15. -dontwarn com.ta.**
  16. -keep class anet.**{*;}
  17. -keep class org.android.spdy.**{*;}
  18. -keep class org.android.agoo.**{*;}
  19. -dontwarn anet.**
  20. -dontwarn org.android.spdy.**
  21. -dontwarn org.android.agoo.**

5. 在應用中注冊和啟動移動推送

  • 首先通過PushServiceFactory獲取到CloudPushService,然後調用register()初始化並注冊雲推送通道,並確保Application上下文中進行初始化工作。

  • 請參照以下代碼段進行初始化:

  1. import android.app.Application;
  2. import android.content.Context;
  3. import android.util.Log;
  4. import com.alibaba.sdk.android.callback.InitResultCallback;
  5. import com.alibaba.sdk.android.push.CloudPushService;
  6. import com.alibaba.sdk.android.push.CommonCallback;
  7. import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
  8. public class MainApplication extends Application {
  9. private static final String TAG = "Init";
  10. @Override
  11. public void onCreate() {
  12. super.onCreate();
  13. initCloudChannel(this);
  14. }
  15. /**
  16. * 初始化雲推送通道
  17. * @param applicationContext
  18. */
  19. private void initCloudChannel(Context applicationContext) {
  20. PushServiceFactory.init(applicationContext);
  21. CloudPushService pushService = PushServiceFactory.getCloudPushService();
  22. pushService.register(applicationContext, new CommonCallback() {
  23. @Override
  24. public void onSuccess(String response) {
  25. Log.d(TAG, "init cloudchannel success");
  26. }
  27. @Override
  28. public void onFailed(String errorCode, String errorMessage) {
  29. Log.d(TAG, "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);
  30. }
  31. });
  32. }
  33. }

【注意】

  • 如果設備成功注冊,將回調callback.onSuccess()方法。
  • 但如果注冊服務器連接失敗,則調用callback.onFailed方法,並且自動進行重新注冊,直到onSuccess為止。(重試規則會由網絡切換等時間自動觸發。)
  • 請在網絡通暢的情況下進行相關的初始化調試,如果網絡不通,或者App信息配置錯誤,在onFailed方法中,會有相應的錯誤碼返回,可參考錯誤處理

啟動正常確認方法:

  • 回調方法中日誌打印正常(以上邊接入代碼為例)
  1. 11-24 12:55:51.096 15235-15535/com.alibaba.xxxx D/YourApp﹕ init cloudchannel success
  • 確認cloudchannel初始化正常,在logcat日誌中:輸入awcn關鍵字:
  1. 11-24 12:53:51.036 15235-15556/com.alibaba.xxxx E/awcn﹕ |[seq:AWCN1_1] AUTH httpStatusCode: 200
  2. 11-24 12:53:51.036 15235-15556/com.alibaba.xxxx E/awcn﹕ |[seq:AWCN1_1] status:AUTH_SUCC
  • 確認DeviceId獲取正常:在初始化成功後使用 cloudPushService.getDeviceId() 獲取deviceId,應該能夠成功獲取。

最後更新:2016-12-18 12:34:37

  上一篇:go 鑒權Action__OpenAPI RAM鑒權_OpenAPI 2.0_移動推送-阿裏雲
  下一篇:go SDK API介紹__Android SDK手冊_App SDK 手冊_移動推送-阿裏雲