移動應(yīng)用推送SDK
阿里移動推送(Alibaba Cloud Mobile Push)是基于大數(shù)據(jù)的移動智能推送服務(wù),幫助App快速集成移動推送的功能。在實現(xiàn)高效、精確、實時的移動推送的同時,降低了開發(fā)成本并提高了用戶活躍度和應(yīng)用的留存率。
初始化
初始化的操作請參見SDK初始化。
使用方法
在應(yīng)用中注冊和啟動移動推送。該操作封裝在SDK初始化中,無需額外操作。
創(chuàng)建消息接收Receiver,繼承自
com.alibaba.sdk.android.push.MessageReceiver
,并在對應(yīng)回調(diào)中添加業(yè)務(wù)處理邏輯,參照以下代碼執(zhí)行。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", "onNotificationClickedWithNoAction, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap); } @Override protected void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl) { Log.e("MyMessageReceiver", "onNotificationReceivedInApp, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap + ", openType:" + openType + ", openActivity:" + openActivity + ", openUrl:" + openUrl); } @Override protected void onNotificationRemoved(Context context, String messageId) { Log.e("MyMessageReceiver", "onNotificationRemoved"); } }
將該receiver添加到AndroidManifest.xml中。
<!-- 消息接收監(jiān)聽器 (用戶可自主擴展) --> <receiver android:name=".MyMessageReceiver" android:exported="false"> <!-- 為保證receiver安全,建議設(shè)置不可導(dǎo)出,如需對其他應(yīng)用開放可通過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>
在SDK初始化的代碼邏輯里,已經(jīng)封裝了以下動作的業(yè)務(wù)邏輯,無需您做任何額外的操作。
- 關(guān)聯(lián)移動推送到某賬號
當(dāng)賬號登錄時,App會自動關(guān)聯(lián)移動推送到當(dāng)前賬號。參見API服務(wù)
/uc/bindPushChannel
。 - 取消關(guān)聯(lián)移動推送到某賬號
當(dāng)賬號登出時,App會自動取消關(guān)聯(lián)移動推送到當(dāng)前賬號。參見API服務(wù)
/uc/unbindPushChannel
。
- 關(guān)聯(lián)移動推送到某賬號
告警功能
告警功能依賴設(shè)備和用戶綁定,用戶和設(shè)備的綁定已經(jīng)封裝在SDK初始化中,您只需關(guān)注告警功能的業(yè)務(wù)邏輯即可。
消息類型說明
移動應(yīng)用推送支持以下兩種類型的消息下發(fā)。
通知類型
服務(wù)器下發(fā)的通知,SDK會自動處理,根據(jù)下發(fā)配置標(biāo)題和內(nèi)容自動彈出通知,無需在MyMessageRecevier中添加業(yè)務(wù)代碼。
消息類型
服務(wù)器下發(fā)的消息可以在初始化中創(chuàng)建的
MyMessageReceiver
對應(yīng)的回調(diào)方法中獲得。如需彈出通知,需要自己根據(jù)下發(fā)的內(nèi)容在此模式下彈出通知。
三方輔助推送通道
當(dāng)App不在運行狀態(tài)時,通過三方輔助推送通道可以將消息離線推送到手機。該推送通道無需額外初始化,您只需申請和配置好三方輔助的推送通道即可,詳細參見移動應(yīng)用推送開發(fā)指南。
目前支持三方輔助推送通道的手機有:小米、華為、VIVO 、OPPO。
小米、OPPO的三方推送:在初始化時配置參數(shù),詳細請參見SDK初始化。
華為、VIVO的三方推送:需要在AndroidManifest.xml配置如下相關(guān)信息。
說明測試華為離線推送功能時,須確保測試App的簽名與提交至華為推送控制臺的App簽名保持一致。
<!-- huawei push start --> <meta-data android:name="com.huawei.hms.client.appid" android:value="your huawei push appid" /> <!-- huawei push end --> <!-- vivo push start --> <meta-data android:name="com.vivo.push.api_key" android:value="your vivo push api_key" /> <meta-data android:name="com.vivo.push.app_id" android:value="your vivo push app id" /> <!-- vivo push start -->
混淆配置
在proguard-rules.pro文件中,加入以下代碼,排除不需要被混淆的類和方法。
-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.**{*;}
-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.**