集成阿里云推送的方式有两种:一:通过maven库达到快速集成的目的,二:通过手动修改配置配置文件的方法,由于手动修改配置文件过程繁琐且极易出现问题,所以强烈建议使用maven库达到快速集成的目的。下面是详细步骤:
1.在Project根目录下build.gradle文件中配置maven库URL:
maven {
url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
}
2.在android/app/build.gradle文件中添加以下依赖:
android {
...
defaultConfig {
applicationId "com.****_rn"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
//以下是新注入的依赖
ndk {
//选择要添加的对应cpu类型的.so库。
abiFilters "armeabi-v7a","x86"
}
}
dependencies {
......
//注入阿里云推送SDK
compile 'com.aliyun.ams:alicloud-android-push:3.1.9.1'
......
}
3.appKey, appSecret配置
在AndroidManifest文件中设置appKey,appSecret,文件路径如图所示:
<meta-data android:name="com.alibaba.app.appkey" android:value="30265081"/> <!-- 请填写你自己的- appKey -->
<meta-data android:name="com.alibaba.app.appsecret" android:value="46d7509e703cfb7b47a804c497ca3e66"/> <!-- 请填写你自己的appSecret -->
4.消息接收Receiver配置
将以下push文件复制入图中所示位置,记得修改包名:
链接: https://pan.baidu.com/s/14n84zDtjzWoBe5-Syr9Aqw 密码: svt7
5.将receiver监听器加入到android/app/src/main/AndroidManifest.xml中
<receiver
android:name=".push.MyMessageReceiver"
android:exported="false"> <!-- 为保证receiver安全,建议设置不可导出,如需对其他应用开放可通过android:permission进行限制 -->
<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.alibaba.sdk.android.push.RECEIVE" />
</intent-filter>
</receiver>
6.配置 Proguard文件
这个文件在android studio中容易找到
-keepclasseswithmembernames class ** {
native <methods>;
}
-keepattributes Signature
-keep class sun.misc.Unsafe { *; }
-keep class com.taobao.** {*;}
-keep class com.alibaba.** {*;}
-keep class com.alipay.** {*;}
-keep class com.ut.** {*;}
-keep class com.ta.** {*;}
-keep class anet.**{*;}
-keep class anetwork.**{*;}
-keep class org.android.spdy.**{*;}
-keep class org.android.agoo.**{*;}
-keep class android.os.**{*;}
-keep class org.json.**{*;}
-dontwarn com.taobao.**
-dontwarn com.alibaba.**
-dontwarn com.alipay.**
-dontwarn anet.**
-dontwarn org.android.spdy.**
-dontwarn org.android.agoo.**
-dontwarn anetwork.**
-dontwarn com.ut.**
-dontwarn com.ta.**
7.在应用中注册和启动移动推送
在android/app/src/main/java/com/ysmz_merchant_rn/MainApplication.java中添加注册推送方法,并在onCreate()方法中调用
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
initializeFlipper(this); // Remove this line if you don't want Flipper enabled
//调用推送方法
initCloudChannel(this);
}
...
/**
* 初始化云推送通道
* @param applicationContext
*/
private void initCloudChannel(Context applicationContext) {
this.createNotificationChannel();
PushServiceFactory.init(applicationContext);
CloudPushService pushService = PushServiceFactory.getCloudPushService();
pushService.register(applicationContext, new CommonCallback() {
@Override
public void onSuccess(String response) {
Log.d(TAG, "init cloudchannel success");
}
@Override
public void onFailed(String errorCode, String errorMessage) {
Log.d(TAG, "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);
}
});
// MiPushRegister.register(applicationContext, "XIAOMI_ID", "XIAOMI_KEY"); // 初始化小米辅助推送
// HuaWeiRegister.register(this); // 接入华为辅助推送
// VivoRegister.register(applicationContext);
// OppoRegister.register(applicationContext, "OPPO_KEY", "OPPO_SECRET");
// MeizuRegister.register(applicationContext, "MEIZU_ID", "MEIZU_KEY");
}
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 通知渠道的id
String id = "1";
// 用户可以看到的通知渠道的名字.
CharSequence name = "notification channel";
// 用户可以看到的通知渠道的描述
String description = "notification description";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
// 配置通知渠道的属性
mChannel.setDescription(description);
// 设置通知出现时的闪灯(如果 android 设备支持的话)
mChannel.enableLights(true);
mChannel.setLightColor(Color.RED);
// 设置通知出现时的震动(如果 android 设备支持的话)
mChannel.enableVibration(true);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
//最后在notificationmanager中创建该通知渠道
mNotificationManager.createNotificationChannel(mChannel);
// context.startForegroundService(new Intent(context, ServedService.class));
}
// }else {
// context.startService(new Intent(context, ServedService.class));
// }
}
至此,移动推送配置已经完成,接着需要在android studio中build一下文件,系统会自动导入移动推送所需的依赖包,没有错误后在阿里云移动推送控制台中推送通知测试。下面两个链接是阿里云官网开发文档,可以自行参考。
Android SDK 3.0配置:https://help.aliyun.com/document\_detail/51056.html?spm=a2c4g.11186623.2.29.10895241WeUcI0
Android SDK 常见错误:https://help.aliyun.com/knowledge\_list/39996.html?spm=a2c4g.11186623.6.611.5b7552e749NL7p