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-阿里云