`
安卓干货铺
  • 浏览: 36230 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

阿里云-移动推送集成以及要点

阅读更多

    原来的项目中集成了阿里云推送,下面把一些要点分享给大家。

 

简介:

阿里移动推送(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.推送通知和推送消费在广播接收回调的方法不同。

推荐阅读

 

 

  深入理解ANR

 

  深入了解MV**模式

 

 

分享到:
评论

相关推荐

    Ruby-阿里云移动推送forruby

    总结来说,Ruby-阿里云移动推送服务为Ruby开发者提供了强大的移动端消息推送能力,通过ezaliyun-ams-master这个SDK,开发者可以方便地集成阿里云移动推送,实现高效的消息传递,增强与用户的互动,提升应用的活跃度...

    2018-2019中国SaaS市场洞察报告-阿里云-201903.pdf

    2018-2019中国SaaS市场洞察报告-阿里云-201903.pdf

    Android阿里云推送

    集成阿里云推送的步骤通常包括以下几步: 1. **注册应用**:在阿里云推送控制台上创建一个新的应用,获取AppKey和MasterSecret,这两个参数在后续的SDK集成中会用到。 2. **集成SDK**:将阿里云推送提供的SDK添加...

    阿里云-飞天开放平台技术白皮书

    阿里云-飞天开放平台技术白皮书

    阿里云邮件推送服务-接口说明-D.docx

    阿里云邮件推送服务-接口说明 阿里云邮件推送服务提供了一种基于 SMTP 协议的邮件推送接口,允许开发者使用 Java 或 C# 等语言通过 SMTP 协议发送邮件。下面将详细介绍该接口的使用方法和参数设置。 SMTP 服务地址...

    阿里云推送

    阿里云推送是一款由阿里云提供的高效、稳定、易用的移动推送服务,它可以帮助开发者向Android和iOS设备发送消息,实现精准的消息推送功能。在移动应用开发中,推送服务是提高用户活跃度、提升用户体验的重要手段。...

    阿里云推送java服务器端的jar包

    阿里云推送服务是一款高效、稳定、可扩展的云端消息推送平台,它允许开发者向移动设备发送消息,以实现即时通信和应用更新提醒等功能。在Java服务器端,通过使用阿里云提供的SDK,我们可以轻松地集成推送服务到我们...

    阿里云-云通信PHP版sdk精简,非原先阿里大于SDK,原阿里大鱼被

    阿里云-云通信PHP版sdk精简,非原先阿里大于SDK,原阿里大鱼被合并进了“阿里云-云通信”,SD_aliyun-dysms-php-sdk

    阿里云-2019中国智能家居发展白皮书-2019.2-82页.pdf

    阿里云-2019中国智能家居发展白皮书-2019.2-82页.pdf

    中国企业2020:人工智能应用实践-阿里云-201908.pdf

    中国企业2020:人工智能应用实践-阿里云-201908.pdf

    安卓消息推送通知栏相关-阿里云提供的消息中间件类似于百度云推送极光推送等但可靠性更好.zip

    总之,阿里云消息服务为开发者提供了一种高效、可靠的安卓消息推送解决方案,通过合理的集成和使用,可以提升应用的用户体验,并有效维护用户与应用的互动。开发者可以通过学习提供的源码和文档,逐步掌握如何利用这...

    阿里云-消息服务-API手册-D.docx

    阿里云消息服务(MNS,Message Service)是一种高效、安全且可弹性扩展的分布式消息中间件,主要功能包括队列模型和主题模型。MNS旨在帮助应用开发者在分布式环境中实现数据的自由传递,构建松耦合的系统。 **队列...

    阿里云邮件推送服务-SDK手册.pdf

    阿里云邮件推送服务-SDK手册是阿里云提供的一款邮件推送服务的SDK使用手册,该手册提供了详细的指导和示例代码,帮助开发者快速上手使用阿里云邮件推送服务。 Access Key的创建 在使用阿里云邮件推送服务之前,...

    阿里云推送 java服务器端sdk jar包

    阿里云推送Java服务器端SDK是开发者在构建基于Java的应用程序时,用于集成阿里云推送服务的重要工具。这个SDK使得开发者能够方便地将消息推送功能整合到自己的后台服务中,从而实现向Android、iOS以及Web等多平台...

    阿里云推送 java端代码

    阿里云推送比百度云推送效果好

    阿里云-专用网络VPC-SDK指南.pdf

    阿里云-专用网络VPC-SDK指南 阿里云-专用网络VPC-SDK指南.pdf是一个关于阿里云专用网络VPC的SDK使用手册,旨在帮助开发者快速了解和使用阿里云专用网络VPC的相关功能。下面是从该文件中提取的相关知识点: 一、...

    阿里云产品PPT.rar

    阿里云-产品介绍+-+ECS弹性计算服务.pptx 阿里云-产品介绍+-+OCS产品v1.5.pptx 阿里云-产品介绍+-+ODPS-v0.3.pptx 阿里云-产品介绍+-+OSS-v0.3.pptx 阿里云-产品介绍+-+OTS-v0.3.pptx 阿里云-产品介绍+-+ RDS-v0.3....

    阿里云运维实战视频.rar

    │ 03阿里云-云基础介绍.mp4 │ 04阿里云-VPC私有网络基础介绍.mp4 │ 05阿里云-完成VPC和ECS服务器创建。.mp4 │ 06阿里云-完成EIP关联ECS服务器.mp4 │ 07阿里云-完成全部资源的开通.mp4 │ 08阿里云-完成实验.mp4...

    阿里云-天池数据分析竞赛-汽车产品聚类分析源码+项目说明.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料,作为参考学习借鉴...阿里云-天池数据分析竞赛-汽车产品聚类分析源码+项目说明.zip

    阿里云培训资料

    1、阿里云-产品介绍+-+ECS弹性计算服务.pptx; 2、阿里云-产品介绍+-+OCS产品v1.5.pptx; 3、阿里云-产品介绍+-+ODPS-v0.3.pptx; 4、阿里云-产品介绍+-+OSS-v0.3.pptx; 5、阿里云-产品介绍+-+OTS-v0.3.pptx; 6、...

Global site tag (gtag.js) - Google Analytics