原来的项目中集成了阿里云推送,下面把一些要点分享给大家。
简介:
阿里移动推送(Alibaba Cloud Mobile Push)是基于大数据的移动智能推送服务,帮助App快速集成移动推送的功能,在实现高效、精确、实时的移动推送的同时,极大地降低了开发成本。让开发者最有效地与用户保持连接,从而提高用户活跃度、提高应用的留存率。
集成:
主这里只贴Maven库快速集成
-
在Project根目录下build.gradle文件中配置maven库URL:
-
在对应的module下的build.gradle文件中添加对应依赖
注 : 如果在添加以上 abiFilter 配置之后android Studio出现以下提示:
NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.
则在 Project 根目录的gradle.properties文件中添加:
android.useDeprecatedNdk=true
-
在AndroidManifest文件中设置appKey,appSecret:
注册调用:
1.先在Application中注册云通道。
package com.haocaiqi.voiceannouncements_spd; import android.app.Application; import android.content.Context; import android.util.Log; import com.alibaba.sdk.android.push.CloudPushService; import com.alibaba.sdk.android.push.CommonCallback; import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; import com.haocaiqi.voiceannouncements_spd.utils.LogUtil; public class MainApplication extends Application { private static final String TAG = "Init"; @Override public void onCreate() { super.onCreate(); initCloudChannel(this); } /** * 初始化云推送通道 * @param applicationContext */ private void initCloudChannel(Context applicationContext) { PushServiceFactory.init(applicationContext); final CloudPushService pushService = PushServiceFactory.getCloudPushService(); pushService.register(applicationContext, new CommonCallback() { @Override public void onSuccess(String response) { Log.d(TAG, "init cloudchannel success"); //获取设备号 pushService.getDeviceId(); LogUtil.logConsole("初始化成功 "+response+ " "+pushService.getDeviceId()); } @Override public void onFailed(String errorCode, String errorMessage) { Log.d(TAG, "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage); LogUtil.logConsole("初始化失败"+errorMessage); } }); } }
2.通过广播接收推送通知或消息
package com.haocaiqi.voiceannouncements_spd.receiver; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Build; import android.support.annotation.RequiresApi; import android.util.Log; import com.alibaba.sdk.android.push.MessageReceiver; import com.alibaba.sdk.android.push.notification.CPushMessage; import com.android.print.sdk.PrinterInstance; import com.android.qzs.voiceannouncementlibrary.VoiceUtils; import com.haocaiqi.voiceannouncements_spd.MainActivity; import com.haocaiqi.voiceannouncements_spd.R; import com.haocaiqi.voiceannouncements_spd.utils.LogUtil; import com.haocaiqi.voiceannouncements_spd.utils.MapUtils; import java.util.Map; /** * Created by qzs on 2017/9/1. */ public class MyMessageReceiver extends MessageReceiver { // 消息接收部分的LOG_TAG public static final String REC_TAG = "receiver"; private PrinterInstance mPrinter; @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"); } }
要点:
1.移动推送的初始化必须在Application中,不能放到Activity中执行。移动推送在初始化过程中将启动后台进程channel,必须保证应用进程和channel进程都执行到推送初始化代码。
2.后端可以通过设备号进行推送,设备号在Application中的获取,如下:
pushService.getDeviceId();
也可以绑定一个ID号来推送,如下代码:
PushServiceFactory.getCloudPushService().bindAccount(你要绑定的ID, new CommonCallback() { @Override public void onSuccess(String s) { LogUtil.logConsole("阿里推送绑定成功 "+s+ " "); } @Override public void onFailed(String s, String s1) { LogUtil.logConsole("阿里推送绑定失败 "+s+ " "+s1); } });
3.如果你绑定了ID,当你不想接收推送消息时必须解绑,下面是解绑的方法:
PushServiceFactory.getCloudPushService().unbindAccount(new CommonCallback() { @Override public void onSuccess(String s) { // Toast.makeText(MainActivity.this, "赞! 阿里云账号绑定成功 ~", // Toast.LENGTH_SHORT).show(); } @Override public void onFailed(String s, String s1) { // Toast.makeText(MainActivity.this, "赞! 阿里云账号解绑失败 ~", // Toast.LENGTH_SHORT).show(); } });
4.如果用户将应用进程手动杀死,不同的ROM对应用进程的权限管理限制不同,部分ROM环境下应用进程可以被拉起响应推送信息,部分机型受限无法被拉起。
5.如果设备是小米或者华为,建议配置小米和华为辅助通道以及小米托管弹窗,可以提升到达率。
6.后台推送的时候设置离线消息保存:pushRequest.setStoreOffline(true);//离线消息是否保存。若保存, 在推送时候,用户即使不在线,下一次上线则会收到,与expirationTime参数配合使用。
7.推送通知和推送消费在广播接收回调的方法不同。
推荐阅读
相关推荐
2018-2019中国SaaS市场洞察报告-阿里云-201903.pdf
用于阿里云和移动推送服务,就是APP消息和通知推送。
阿里云-云数据库OceanBase-SQL参考-D.docx
阿里云-消息服务-API手册-D.docx
阿里云-归档存储-SDK手册-D.docx
阿里云-云计算行业:中国新型基础设施产业园区发展模式及趋势2020.pdf
【阿里云-性能测试体系】【阿里云-性能测试体系】【阿里云-性能测试体系】【阿里云-性能测试体系】
阿里云-飞天开放平台技术白皮书
阿里云-不更换IP迁移文档 1.先制作好自定义镜像 2.开好新的服务器不选择带宽和公网IP 3.将旧的服务器IP转换成弹性IP 4.将弹性IP绑定在新的服务器上 注:旧服务器剩余时间要大于七天才能使用此方法进行迁移
│ 03阿里云-云基础介绍.mp4 │ 04阿里云-VPC私有网络基础介绍.mp4 │ 05阿里云-完成VPC和ECS服务器创建。.mp4 │ 06阿里云-完成EIP关联ECS服务器.mp4 │ 07阿里云-完成全部资源的开通.mp4 │ 08阿里云-完成实验.mp4...
阿里云-2019中国智能家居发展白皮书-2019.2-82页.pdf
中国企业2020:人工智能应用实践-阿里云-201908.pdf
集成了阿里云推送 感觉比百度推送好一点 跟极光推送比也还行
阿里云推送比百度云推送效果好
阿里云-产品介绍+-+ECS弹性计算服务.pptx 阿里云-产品介绍+-+OCS产品v1.5.pptx 阿里云-产品介绍+-+ODPS-v0.3.pptx 阿里云-产品介绍+-+OSS-v0.3.pptx 阿里云-产品介绍+-+OTS-v0.3.pptx 阿里云-产品介绍+-+ RDS-v0.3....
1、阿里云-产品介绍+-+ECS弹性计算服务.pptx; 2、阿里云-产品介绍+-+OCS产品v1.5.pptx; 3、阿里云-产品介绍+-+ODPS-v0.3.pptx; 4、阿里云-产品介绍+-+OSS-v0.3.pptx; 5、阿里云-产品介绍+-+OTS-v0.3.pptx; 6、...
阿里云-云数据库MongoDB-用户手册-D.docx
金融行业:阿里云金融数据中台报告-阿里云-16页.pdf
阿里云-飞天系统-总体框架
阿里云-大数据数仓建设性能优化阿里云-大数据数仓建设性能优化阿里云-大数据数仓建设性能优化阿里云-大数据数仓建设性能优化