702
阿裏雲
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下載

2.2 SDK目錄結構
OneSDK|-- AndroidManifest.xml|-- build.gradle|-- libs| |-- armeabi| | |-- libcocklogic.so -網絡連接庫及幽靈進程的輔助lib| | |-- libtnet.so| |-- armeabi-v7a| | |-- libcocklogic.so| | |-- libtnet.so| |-- arm64-v8a| | |-- libcocklogic.so| | |-- libtnet.so| |-- x86| | |-- libcocklogic.so| | |-- libtnet.so| |-- arm64| | |-- libcocklogic.so| | |-- libtnet.so| |-- alicloud-android-push-sdk.jar -移動推送主功能包| |-- alisdk-ut.jar -UT基礎包| |-- utdid4all.jar -設備Id生成包|-- project.properties|-- src
2.3 SDK集成:
- 請在工程中添加
android-support-v4.jar支持包(v2.3.0以上),關於v4支持包的說明請參考:https://developer.android.com/topic/libraries/support-library/features.html#v4; - 手動拷貝下載SDK中的libs目錄,手動拷貝後需要在APP工程的build.gradle中配置jniLibs的目錄:
android {...sourceSets {main {jniLibs.srcDirs = ['libs']}}}
3. 配置AndroidManifest.xml
3.1 appkey和appsecret配置
<application android:name="*****"><meta-data android:name="com.alibaba.app.appkey" android:value="*****"/> <!-- 請填寫你自己的- appKey --><meta-data android:name="com.alibaba.app.appsecret" android:value="****"/> <!-- 請填寫你自己的appSecret --></application>
com.alibaba.app.appkey和com.alibaba.app.appsecret為您App的對應信息,在推送控製台APP列表頁的應用證書中獲取。appkey和appsecret請務必寫在application標簽下,否則sdk會報找不到appkey錯誤。
3.2 Permission 的配置
- 將以下uses-permission片段拷貝進你manifest中的Permission申明區域中:
<!--阿裏移動推送相關權限--><!--Android 6.0版本可去除,用於選舉信息(通道複用)的同步--><uses-permission android:name="android.permission.WRITE_SETTINGS" /><!--進行網絡訪問和網絡狀態監控相關的權限聲明--><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!--允許對sd卡進行讀寫操作--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--網絡庫使用,當網絡操作時需要確保事務完成不被殺掉--><uses-permission android:name="android.permission.WAKE_LOCK" /><!--用於讀取手機硬件信息等,用於機型過濾--><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!--選舉使用,當應用有刪除或者更新時需要重新選舉,複用推送通道--><uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED" /><uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" /><uses-permission android:name="android.permission.RESTART_PACKAGES" /><!--補償通道小米PUSH使用,不用可去除--><uses-permission android:name="android.permission.GET_TASKS" /><!--補償通道GCM使用,不使用可去除--><uses-permission android:name="android.permission.GET_ACCOUNTS" /><!--允許監聽啟動完成事件--><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><!--允許訪問震動器--><uses-permission android:name="android.permission.VIBRATE" /><!-- 允許task重排序 --><uses-permission android:name="android.permission.REORDER_TASKS" />
3.3 Service 的配置
- 將以下service片段拷貝進你Manifest中的service申明區域中:
<!-- 通道保持服務 --><service android:name="com.alibaba.sdk.android.push.ChannelService"android:exported="true" android:process=":channel"><intent-filter><action android:name="com.taobao.accs.intent.action.SERVICE"/></intent-filter><intent-filter><action android:name="org.agoo.android.intent.action.PING_V4" /><category android:name="taobao" /></intent-filter></service><!-- 消息接收服務 --><service android:name="com.alibaba.sdk.android.push.MsgService"android:exported="false"><intent-filter><action android:name="com.taobao.accs.intent.action.RECEIVE" /></intent-filter><intent-filter><action android:name="com.alibaba.sdk.android.push.NOTIFY_ACTION" /></intent-filter></service><!-- 消息接收增強服務(可提高通知/消息達到率)--><service android:name="com.alibaba.sdk.android.push.channel.TaobaoRecvService" android:exported="true"><intent-filter><action android:name="org.android.agoo.client.MessageReceiverService"/></intent-filter></service>
3.4 Receiver 的配置
將以下receiver片段拷貝進你manifest中的receiver申明區域中:
<!--消息接收監聽器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver"><intent-filter><action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/></intent-filter><intent-filter><action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED"/></intent-filter><intent-filter><action android:name="com.taobao.accs.intent.action.COMMAND" /></intent-filter><intent-filter><action android:name="com.taobao.taobao.intent.action.COMMAND" /></intent-filter><intent-filter><action android:name="org.agoo.android.intent.action.RECEIVE" /></intent-filter><intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /></intent-filter><intent-filter><action android:name="android.intent.action.USER_PRESENT" /></intent-filter><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED"/></intent-filter><intent-filter><action android:name="android.intent.action.PACKAGE_REMOVED"/><data android:scheme="package"/></intent-filter></receiver>
4. Proguard配置
-keepclasseswithmembernames class ** {native <methods>;}-keepattributes Signature-keep class sun.misc.Unsafe { *; }-keep class com.taobao.** {*;}-keep class com.alibaba.** {*;}-keep class com.alipay.** {*;}-dontwarn com.taobao.**-dontwarn com.alibaba.**-dontwarn com.alipay.**-keep class com.ut.** {*;}-dontwarn com.ut.**-keep class com.ta.** {*;}-dontwarn com.ta.**-keep class anet.**{*;}-keep class org.android.spdy.**{*;}-keep class org.android.agoo.**{*;}-dontwarn anet.**-dontwarn org.android.spdy.**-dontwarn org.android.agoo.**
5. 在應用中注冊和啟動移動推送
首先通過
PushServiceFactory獲取到CloudPushService,然後調用register()初始化並注冊雲推送通道,並確保Application上下文中進行初始化工作。請參照以下代碼段進行初始化:
import android.app.Application;import android.content.Context;import android.util.Log;import com.alibaba.sdk.android.callback.InitResultCallback;import com.alibaba.sdk.android.push.CloudPushService;import com.alibaba.sdk.android.push.CommonCallback;import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;public class MainApplication extends Application {private static final String TAG = "Init";@Overridepublic void onCreate() {super.onCreate();initCloudChannel(this);}/*** 初始化雲推送通道* @param applicationContext*/private void initCloudChannel(Context applicationContext) {PushServiceFactory.init(applicationContext);CloudPushService pushService = PushServiceFactory.getCloudPushService();pushService.register(applicationContext, new CommonCallback() {@Overridepublic void onSuccess(String response) {Log.d(TAG, "init cloudchannel success");}@Overridepublic void onFailed(String errorCode, String errorMessage) {Log.d(TAG, "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);}});}}
【注意】:
- 如果設備成功注冊,將回調callback.onSuccess()方法。
- 但如果注冊服務器連接失敗,則調用callback.onFailed方法,並且自動進行重新注冊,直到onSuccess為止。(重試規則會由網絡切換等時間自動觸發。)
- 請在網絡通暢的情況下進行相關的初始化調試,如果網絡不通,或者App信息配置錯誤,在onFailed方法中,會有相應的錯誤碼返回,可參考錯誤處理。
啟動正常確認方法:
- 回調方法中日誌打印正常(以上邊接入代碼為例)
11-24 12:55:51.096 15235-15535/com.alibaba.xxxx D/YourApp﹕ init cloudchannel success
- 確認cloudchannel初始化正常,在logcat日誌中:輸入awcn關鍵字:
11-24 12:53:51.036 15235-15556/com.alibaba.xxxx E/awcn﹕ |[seq:AWCN1_1] AUTH httpStatusCode: 20011-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
上一篇:
鑒權Action__OpenAPI RAM鑒權_OpenAPI 2.0_移動推送-阿裏雲
下一篇:
SDK API介紹__Android SDK手冊_App SDK 手冊_移動推送-阿裏雲
User__數據類型_RAM API文檔_訪問控製-阿裏雲
刪除域名接口__域名管理接口_Open API_HTTPDNS-阿裏雲
創建函數__數據庫開發_用戶指南(RDBMS)_數據管理-阿裏雲
設置文件HTTP頭__管理文件_控製台用戶指南_對象存儲 OSS-阿裏雲
其他HPC應用__應用場景_產品簡介_高性能計算-阿裏雲
如何獲取真實來源IP__常見問題_負載均衡-阿裏雲
性能白皮書__產品白皮書_雲數據庫 RDS 版-阿裏雲
申請內網連接串(原內外網切換)__實例管理_API 參考_雲數據庫 RDS 版-阿裏雲
如何給應用簽名__使用手冊_移動安全-阿裏雲
命令行快速開始1__快速入門_批量計算-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲