Android开发笔记(一百零四)消息推送SDK

本文详细记录了Android应用中集成极光推送和个推的过程,包括常用概念解释、集成步骤、推送接口调用、推送事件广播及服务器发送通知的操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推送的集成

常用概念

推送:从服务器把消息实时发到客户端app上,这就是推送,推送可用于发送系统通知、发送推荐信息、发送聊天消息等等。
别名:用于给移动设备取个好记的名字,比如电脑有计算机名,可以把别名理解为开发者给移送设备起的外号。不过,多个移动设备可以起一样的别名,这几个设备就会同时收到发给该别名的消息。
标记:用于给移动设备打标签,可以理解为分类,比如超市里的泰国大米既可以打上“粮食制品”的标签,也可以打上“进口商品”的标签。服务器可以统一给某个种类的移动设备发送消息;如果移动设备打上本设备手机号码的标签,那么服务器就能该号码的手机单独发消息。
自定义消息:推送的消息内容一般由sdk直接展示在系统的通知栏,不过有时候我们希望由自己控制展示通知的时机,比如说要预先处理某项事务,或者说以对话框形式展现消息等等,在这些时候,自定义消息就派上用场了,app可以先接收服务器发来的自定义消息,然后自主选择接下来的处理逻辑。


集成步骤

推送sdk都分为客户端与服务端两块,开发者在客户端app上集成客户端sdk,还得在服务器的程序上集成服务端sdk。不过推送客户端与服务端sdk并不直接通信,它们之间必须通过推送厂商的推送服务器来中转。下面是推送sdk集成时的数据流转过程:
1、集成了客户端sdk的app启动之后,要先进行初始化(注册)操作,即客户端sdk向推送服务器(推送厂商)发送初始化请求(包含appkey、master secret),推送服务器给该移动设备分配一个唯一标识。
2、客户端sdk向推送服务器发送别名与标记设置,推送服务器给该移动设备登记相应的别名与标记。
3、客户端sdk向推送服务器发送开启推送请求,推送服务器表示知道了,接下来如果有消息就会告诉你。
4、服务端sdk封装消息推送请求,包括appkey、master secret、别名、标记、推送内容等等信息。
5、服务端sdk向推送服务器发送消息推送请求,推送服务器首先校验appkey和master secret是否合法;校验通过,再根据别名和标记挑出需要接收通知的客户端设备集合;最后把推送内容分别推送到符合条件的客户端设备上。


极光推送

极光推送是使用量较大的一个推送sdk,支持ios、android、winphone等平台。极光推送的客户端sdk包为jpush-android-2.1.5.jar,服务端sdk包为jpush-client-3.2.9.jar,服务端的sdk还依赖于gson、slf4j、log4j等jar包。


推送调用的接口

在APP上启用极光推送,用到的是JPushInterface类,下面是JPushInterface的常用方法说明:
init : 初始化。可在MainApplication或者MainActivity中调用。
stopPush : 暂停接收通知。
resumePush : 恢复接收通知。
isPushStopped : 判断推送是否停止
getRegistrationID : 获取注册id。
setAliasAndTags : 设置本设备的别名与标记。如果服务器指定向某个手机号码推送消息,则app调用该方法把手机号码设置为别名或标记。
setAlias : 设置别名。
setTags : 设置标记。
clearAllNotifications : 清除所有通知。
setPushNotificationBuilder : 设置通知栏样式。类型为1表示使用基本样式,为2表示使用自定义样式。
setPushTime : 设置接收通知的时间段。可设置周一到周日,每天的起始时间与结束时间。


推送事件的广播

极光推送的各事件都是靠广播发出来,并不使用监听器,所以我们要在app中自定义广播接收器来处理事件。下面是极光推送几个常用的事件介绍:
1、JPushInterface.ACTION_REGISTRATION_ID
表示注册SDK的事件,对应的intent-filter是<action android:name="cn.jpush.android.intent.REGISTRATION" />
2、JPushInterface.ACTION_MESSAGE_RECEIVED
表示接收自定义消息的事件,对应的intent-filter是<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
3、JPushInterface.ACTION_NOTIFICATION_RECEIVED
表示接收通知的事件,对应的intent-filter是<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
4、JPushInterface.ACTION_NOTIFICATION_OPENED
表示点击通知栏的事件,对应的intent-filter是<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
5、JPushInterface.ACTION_RICHPUSH_CALLBACK
表示接收富文本(如网页、多媒体等等)回调的事件,对应的intent-filter是<action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" />
6、JPushInterface.ACTION_CONNECTION_CHANGE
表示网络连接变化(连上、断开)的事件,对应的intent-filter是<action android:name="cn.jpush.android.intent.CONNECTION" />


下面是在AndroidManifest.xml注册极光广播接收器的xml例子:
    <receiv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值