(4.2.12.2)浅谈第三方推送[API的不同]:百度推送、小米推送、华为推送
来源:互联网 发布:淘宝怎么设置不包邮 编辑:程序博客网 时间:2024/06/02 04:46
在上一章节,我们了解了推送的基本集成,在本章节分析他们在使用上的不同
录入时版本号:
- 百度——2016-05-27 Android V5.0.0
- 小米——2.2.21版 于2015.11.30更新
- 华为——Push SDK V2.7.05于2016年1月28日
百度、小米、华为推送一览
属性
管理类
备注1:百度推送
- 对于Android设备无账户体系:
- 同一台设备对应唯一一个channel_id;
- 同一台设备上的不同应用对应不同的user_id;
- 同一台设备上的相同应用对应唯一一对[channel_id, user_id];
- 不同的设备对应不同的channel_id,若channel_id不同,user_id一定不同;
- 对于Android设备百度账户体系:
- 同一台设备对应唯一一个channel_id;
- 同一台设备上若有不同的用户登陆了同一个应用,那么就会有不同的user_id;
- 若同一个用户在多个设备上登陆了相同的应用,那么得到的将都是同一个user_id;
接收器Receiver
- 小米 onCommandResult函数参数列表
参数列表 参数说明message 服务器返回的命令封装在 MiPushCommandMessage的对象中,可以从该对象中获取command、commandArguments、resultCode、 reason等信息。command表示命令的类型。调用MiPushClient.registerPush(),返回MiPushClient.COMMAND_REGISTER调用MiPushClient.setAlias(),返回MiPushClient.COMMAND_SET_ALIAS调用MiPushClient.unsetAlias(),返回MiPushClient.COMMAND_UNSET_ALIAS调用MiPushClient.subscribe(),返回MiPushClient.COMMAND_SUBSCRIBE_TOPIC调用MiPushClient.unsubscribe(),返回MiPushClient.COMMAND_UNSUBSCIRBE_TOPIC调用MiPushClient.setAcceptTime(),返回MiPushClient.COMMAND_SET_ACCEPT_TIME调用MiPushClient.pausePush(),返回MiPushClient.COMMAND_SET_TARGETPT_TIME调用MiPushClient.resumePush(),返回MiPushClient.COMMAND_SET_ACCEPT_TIMEcommandArguments 表示命令的参数。例如:注册app就会返回app本次初始化所对应MiPush推送服务的唯一标识regId,alias就会返回alias的内容,订阅和取消订阅主题就会返回topic,setAcceptTime就会返回时间段。resultCode 表示调用命令的结果。如果成功,返回ErrorCode.Sussess即0;否则返回错误类型值。reason表示调用命令失败的原因。如果失败,则返回失败原因,否则返回为null。
- 华为 onEvent函数参数列表
NOTIFICATION_OPENED, //通知栏中的通知被点击打开NOTIFICATION_CLICK_BTN, //通知栏中通知上的按钮被点击PLUGINRSP, //标签上报回应
通知样式
推送配置
支持
小米
- 透传和通知栏,在送达率上有什么分别?
答:首先解释一下透传和通知栏方式的原理,透传是指当小米推送服务客户端SDK接收到消息之后,直接把消息通过回调方法发送给应用,不做任何处理;而通知栏方式,则在设备接收到消息之后,首先由小米推送服务SDK弹出标准安卓通知栏通知,在用户点击通知栏之后,激活应用。 在非MIUI系统中,由于维护小米推送服务长连接的service是寄生在App的运行空间当中的,因此透传和通知栏方式在送达率上并没有任何区别,都需要应用驻留在后台。即,如果一台设备通知栏消息能够接收到并弹出,那么其透传消息也同样能接收到。 在MIUI系统中,由于长连接是由MIUI系统服务建立并维护的,因此在接收消息的时候并不需要应用驻留后台。如果采用通知栏方式接收消息,由于通知栏也是MIUI系统服务弹出的,就可以做到不需要用户后台驻留或者可以自启动消息就能送达。而如果采用透传消息,由于需要直接执行应用的代码,因此即使消息已经到了系统服务,如果应用没有驻留后台或者能自启动,消息依然不能送达,需等下次用户手动点击激活应用后,才能接收到消息。 综上,在MIUI系统中,通知栏消息的送达率会远高于透传方式;在非MIUI系统中,通知栏和透传方式的送达率是一样的。
- regID是根据什么生成的?会不会经常变化?
答:regID是在客户端向小米推送服务注册时,小米推送服务端根据设备标识、appID以及当前时间戳生成,因此能够保证每个设备上每个app对应的regID都是不同的。当app注册成功后,小米推送服务客户端SDK会在本地通过shared_prefs来保存这个regID,之后app调用注册,SDK后会在本地直接读取出这个regID并直接返回,不会重新请求服务器。因此只要应用不卸载重装或者清除应用本地数据,regID就不会变化。否则,如果SDK没有从本地读取到缓存的regID,则会向服务端重新请求,此时regID会重新生成。
- 如果我使用通知栏类型消息,能否在通知栏消息到达之前,先执行一段app的代码?或者在通知栏到达时,通知app?
答:在MIUI系统上,通知栏类型的消息,是不需要应用启动就能弹出的(这一特性决定了通知栏消息的弹出可以不受应用自启动管理的影响),因此在整个弹出通知栏消息的过程中,app是完全不可感知的,当用户点击通知栏消息之后,才会执行到app的代码。
- (4.2.12.2)浅谈第三方推送[API的不同]:百度推送、小米推送、华为推送
- (4.2.12)浅谈第三方推送[推送基础]:百度推送、小米推送、华为推送
- (4.2.12.3)浅谈第三方推送[bug查询]:百度推送、小米推送、华为推送
- (4.2.12.1)浅谈第三方推送[快速集成]:百度推送、小米推送、华为推送、魅族推送
- 第三方推送(小米华为友盟)接入实践
- 第三方推送-极光推送
- android 小米,华为,百度推送封装(QJPushService 使用)
- 第三方--极光推送
- Android第三方推送
- 使用第三方推送平台 极光推送
- Android第三方推送——极光推送,百度云推送,个推
- 小米推送,华为推送,个推,阿里云推送集成(服务端JAVA开发)
- iOS推送 (百度推送)
- iOS推送 (百度推送)
- 推送
- 推送
- 推送
- 推送
- swift学习日志—— if let 与 guard 语法糖
- 访问统计
- 学习内容DPDK
- 运用Thinkphp搭建简单留言板(附源码)-(上)
- Mac os平台开发Android---adb配置
- (4.2.12.2)浅谈第三方推送[API的不同]:百度推送、小米推送、华为推送
- iOS如何去除小数点后无效的0
- 分离字符串并遍历
- http摘要
- UITableView 自带编辑删除
- Android Handler详细使用方法实例
- lua CRC32校验码生成
- 神经网络机器翻译Neural Machine Translation(4): Modeling Coverage & MRT
- UE4 调试着色器编译过程