Android集成阿里消息推送

1.阿里消息推送的官方文档地址

https://help.aliyun.com/document_detail/30054.html?spm=a2c4g.11174283.3.2.136c6d1669NIv4

 

集成的步骤:

第一步:创建app(创建app这个步骤的内容是官方文档里的)

移动服务当前创建应用,需要两步

  • (1)添加Android应用
  • (2)在产品处,点击管理后,右上角点击“创建应用”完成应用创建

1、点击页面中的“添加产品”按钮,即可创建一个新的产品

1

2、输入产品的基本信息创建App时需要输入产品的名称,上传产品图标,选择产品分类。

2

3、产品创建成功

App创建成功后,产品列表会多出一个产品,强烈建议您去配置app

4

4、创建产品对应的应用

在产品列表页面,点击已经创建的产品按钮,进入产品管理页面。

5、在产品管理页面,点击添加应用图标,创建应用(目前需要分端创建)。

5

  • (1)创建Android应用,并填写APP名称和PackageName

6

创建完成后,应用会出现在应用列表中:

7

 

4

 第二步:下载SDK

Android-SDK-Download

   第三步:集成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.com/nexus/content/repositories/releases/'
        }
        //集成支付宝添加的
        flatDir {
            dirs 'libs'
        }
        maven { url 'https://dl.bintray.com/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);
        // 配置通知渠道的属
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Cordova 打包的 Android 包中集成阿里云移动推送,需要执行以下步骤: 1. 在阿里云移动推送控制台中创建应用并获取 AppKey 和 AppSecret。 2. 在 Cordova 项目中安装阿里云移动推送插件: ``` cordova plugin add cordova-plugin-aliyun-push ``` 3. 在 config.xml 文件中添加以下代码: ``` <platform name="android"> <preference name="com.alibaba.sdk.android.push.APP_KEY" value="YOUR_APP_KEY" /> <preference name="com.alibaba.sdk.android.push.APP_SECRET" value="YOUR_APP_SECRET" /> </platform> ``` 将 `YOUR_APP_KEY` 和 `YOUR_APP_SECRET` 替换为你在第一步中获取到的对应值。 4. 在 AndroidManifest.xml 文件中添加以下权限和服务: ``` <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <service android:name="com.alibaba.sdk.android.push.PushService" android:enabled="true" android:exported="false" /> <receiver android:name="com.alibaba.sdk.android.push.AlipushReceiver" android:exported="false"> <intent-filter> <action android:name="com.alibaba.sdk.android.push.message.NOTIFY_MSG" /> <action android:name="com.alibaba.sdk.android.push.notification.CLEAR_NOTICE" /> <action android:name="com.alibaba.sdk.android.push.notification.OPEN_NOTICE" /> <action android:name="com.alibaba.sdk.android.push.notification.DELETE_NOTICE" /> </intent-filter> </receiver> <receiver android:name="com.alibaba.sdk.android.push.SystemEventReceiver"> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> ``` 5. 在 MainActivity.java 文件中添加以下代码: ``` import android.os.Bundle; import org.apache.cordova.*; import com.alibaba.sdk.android.push.AndroidPopupActivity; import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; public class MainActivity extends CordovaActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Enable remote debugging via chrome://inspect if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); } // Set by <content src="index.html" /> in config.xml loadUrl(launchUrl); // Initialize Aliyun Push Service PushServiceFactory.init(this.getApplicationContext()); } } ``` 这里需要注意,需要导入 `com.alibaba.sdk.android.push.AndroidPopupActivity` 和 `com.alibaba.sdk.android.push.noonesdk.PushServiceFactory`。 6. 最后,在阿里云移动推送控制台中配置推送通知和消息,并在应用中调用相应的 API 来注册设备和接收推送通知和消息。 以上步骤是在 Cordova 项目中集成阿里云移动推送的基本流程,具体实现可能会因项目环境和需求不同而有所变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值