admin管理员组文章数量:1565800
1.阿里消息推送的官方文档地址
https://help.aliyun/document_detail/30054.html?spm=a2c4g.11174283.3.2.136c6d1669NIv4
集成的步骤:
第一步:创建app(创建app这个步骤的内容是官方文档里的)
移动服务当前创建应用,需要两步
- (1)添加Android应用
- (2)在产品处,点击管理后,右上角点击“创建应用”完成应用创建
1、点击页面中的“添加产品”按钮,即可创建一个新的产品
2、输入产品的基本信息创建App时需要输入产品的名称,上传产品图标,选择产品分类。
3、产品创建成功
App创建成功后,产品列表会多出一个产品,强烈建议您去配置app
4、创建产品对应的应用
在产品列表页面,点击已经创建的产品按钮,进入产品管理页面。
5、在产品管理页面,点击添加应用图标,创建应用(目前需要分端创建)。
- (1)创建Android应用,并填写APP名称和PackageName
创建完成后,应用会出现在应用列表中:
第二步:下载SDK
第三步:集成SDK
1.添加jar包到libs文件夹下
2.在APP工程的build.gradle中配置jniLibs的目录
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
3.添加gradle依赖
implementation('com.aliyun.ams:alicloud-android-push:3.1.4', {
//和支付支付有utdid包的冲突
exclude module: 'alicloud-android-utdid'
})
4.在AndroidManifest.xml里配置appkey和appsecret
<!-- 阿里推送 -->
<meta-data
android:name="com.alibaba.app.appkey"
android:value="2********00" />
<meta-data
android:name="com.alibaba.app.appsecret"
android:value="3b6**************fdb" />
5.在AndroidManifest.xml里添加权限(这个不是阿里官方文档权限,是我自己项目里的,可以自己去官方文档复印哦)
<!-- 允许程序打开定位权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 允许程序打开网络套接字 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许程序设置内置sd卡的写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许程序获取网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 允许程序访问WiFi网络信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 允许程序读写手机状态和身份 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 允许程序访问CellID或WiFi热点来获取粗略的位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<!-- application中弹框 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!-- 分享权限 -->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- 蓝牙分享所需的权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!-- 照片权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
6.在项目的主build.gradle不是app下的build.gradle的allprojects 下添加
allprojects {
repositories {
google()
jcenter()
//集成阿里推送添加的
maven {
url 'http://maven.aliyun/nexus/content/repositories/releases/'
}
//集成支付宝添加的
flatDir {
dirs 'libs'
}
maven { url 'https://dl.bintray/umsdk/release' } //友盟统计
maven { url 'https://jitpack.io' }
}
}
7.接收消息的Receiver配置
<receiver
android:name=".receiver.AliMessageReceiver"
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>
8.混淆文件proguard-rules.pro的配置
#阿里移动推送
-keep class android.support.multidex.**{*;}
-keep class com.alibaba.fastjson.** {*;}
-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.**{*;}
-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.**
# 小米辅助通道
-keep class com.xiaomi.** {*;}
-dontwarn com.xiaomi.**
# 华为辅助通道
-keep class com.huawei.** {*;}
-dontwarn com.huawei.**
9.Application中的配置
/**
* 初始化云推送通道
* @param applicationContext
*/
private void initCloudChannel(Context applicationContext) {
PushServiceFactory.init(applicationContext);
final CloudPushService pushService = PushServiceFactory.getCloudPushService();
pushService.register(applicationContext, new CommonCallback() {
@Override
public void onSuccess(final 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);
}
});
this.createNotificationChannel();
MiPushRegister.register(applicationContext, Constants.XIAOMI_APP_ID, Constants.XIAOMI_APP_KEY); // 初始化小米辅助推送
HuaWeiRegister.register(applicationContext); // 接入华为辅助推送
OppoRegister.register(applicationContext, Constants.OPPO_APPKEY, Constants.OPPO_APPSECRET); // appKey/appSecret在OPPO通道开发者平台获取
}
private void createNotificationChannel() {
//针对于安卓8.0以上的手机,开启通道
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 通知渠道的id
String id = "app";
// 用户可以看到的通知渠道的名字.
CharSequence name = "notification channel";
// 用户可以看到的通知渠道的描述
String description = "notification description";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
// 配置通知渠道的属
版权声明:本文标题:Android集成阿里消息推送 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1726415690a1069786.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论