一 创建App应用
1.1 在控制台发(https://mhub.console.aliyun.com)的App列表页,点击页面产品列表中“添加产品”的图标即可创建一个新的产品(产品是一个集合的概念,产品下包含iOS应用、Android应用)。
然后点击刚创建的产品,点击“添加应用”的图标即可添加Android或者iOS应用(目前只能创建分端应用了,个人感觉还是不分端的好)。
1.2 输入APP基本信息并在控制台配置应用
输入产品的基本信息创建App时需要输入产品的名称,上传产品图标,选择产品分类。
其中App的名称必填,支持中文、英文字母、数字和下划线,长度限制在4-30位。
1.创建Android应用,并填写APP名称和PackageName。
2. 创建iOS应用,并填写APP名称和BundleId
二 Android SDK 3.0配置
以下集成是官方Android SDK的快速集成适用于V3.0.0以上版本。通过Maven库快速集成,该集成方案配置简单,不容易出问题。 (详情参考官方集成文档)
2.1 快速集成(远程同步)
在Project根目录下build.gradle文件中配置maven库URL:
allprojects {
repositories {
jcenter()
maven {
url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
}
}
}
在对应的module下的build.gradle文件中添加对应依赖:
android {
......
defaultConfig {
applicationId "com.xxx.xxx" //包名
......
ndk {
//选择要添加的对应cpu类型的.so库。为了兼容cpu,查看官网SDK的libs多添加几个
abiFilters 'arm64-v8a', 'armeabi', 'armeabi-v7a', 'mips', 'mips64', 'x86', 'x86_64'
}
......
}
......
}
dependencies {
......
compile 'com.aliyun.ams:alicloud-android-push:3.1.2'
......
}
注 : 如果在添加以上 abiFilter 配置之后android Studio出现以下提示:(一般不会出错)
NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.
则在 Project 根目录的gradle.properties文件中添加:
android.useDeprecatedNdk=true
2.2 AndroidManifest配置
2.2.1 appKey, appSecret配置
在AndroidManifest文件中设置appKey,appSecret:
<application android:name="*****">
<!-- 请填写你自己的- appKey -->
<meta-data android:name="com.alibaba.app.appkey" android:value="*****"/>
<!-- 请填写你自己的appSecret -->
<meta-data android:name="com.alibaba.app.appsecret" android:value="****"/>
</application>
(百川的appkey&appSecret不能在阿里云推送上使用否则应用会找不到对应的appKey)
2.2.2 消息接收Receiver配置
创建消息接收Receiver,继承自com.alibaba.sdk.android.push.MessageReceiver,并在对应回调中添加业务处理逻辑,可参考以下代码:
public class MyMessageReceiver extends MessageReceiver {
// 消息接收部分的LOG_TAG
public static final String REC_TAG = "receiver";
@Override
public void onNotification(Context context, String title, String summary, Map<String, String> extraMap) {
// TODO 处理推送通知
Log.e("MyMessageReceiver", "Receive notification, title: " + title + ", summary: " + summary + ", extraMap: " + extraMap);
}
@Override
public void onMessage(Context context, CPushMessage cPushMessage) {
Log.e("MyMessageReceiver", "onMessage, messageId: " + cPushMessage.getMessageId() + ", title: " + cPushMessage.getTitle() + ", content:" + cPushMessage.getContent());
}
@Override
public void onNotificationOpened(Context context, String title, String summary, String extraMap) {
Log.e("MyMessageReceiver", "onNotificationOpened, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap);
}
@Override
protected void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap) {
Log.e("MyMessageReceiver", "onNotification