极光推送是为 App 提供第三方推送服务的平台之一,它提供四种消息形式:
1.通知
-
Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息。
-
Android:依靠 JPush service ,由 JPush SDK 实现在手机通知栏的展示。
Android 通知消息的流程:
我们可以调用极光的 API 发起推送请求,也可以通过极光官网控制台推送。
请求在参数要求上基本正确——请求成功,返回 msgid (这条消息的 ID 标识),返回 200(成功)或由极光判断的推送失败,一般是 1011 找不到目标的错误,参数错误有返回错误码,可对应查看。
极光服务器处理该请求:
-
若该 App 长连接正常,极光服务器就会把这条消息在线下发给它。
-
如果长连接是断开的,那么就会免费保存 5 条离线消息。
-
如果该 App 在你推送消息时设定的离线保存时间(time_to_live) 时间内,重连上了长连接,该条消息就会下发给 App 。
-
如果离线时间内,推送的消息超过5条,最先保存的消息会被删掉。
-
如果过了time_to_live,该条消息也会被删掉,没有收到的 App 就不会再收到了。
涉及到长连接断开的问题:
-
RTC 会定时发送心跳去触发连接。
-
断网,关机,进程不在(被杀死),主动调用 stoppush 都会导致断开。
-
一些手机系统的限制会导致断网和进程不在。
解决办法:
-
添加极光提供的拉起服务
-
文档提示用户对 App 进行保护
Android 收不到消息的情况,极光社区也有一个总结说明。
App 收到了通知,由 JPush SDK 进行展示,和 iOS 一样,如果通知内容( alert )为空,也是默认不展示的, 但能获取到消息中的数据,以作他用。
我们可以简单的修改这个通知栏的样式。在客户端定制了通知栏样式后,需要使用该通知栏时,在推送的时候就 记得要写对应的通知栏编号。
Android 关闭通知:
可以达到关闭通知效果的有两个办法,我们可以根据自己的需求去选用,如果在 UI 层面加一个关闭的按钮,那么对应的代码层面也是去选用这两种 API 。
调用 stoppush : 一种本地的状态操作,相当于手动终止 push 服务的效果,这个会导致同时关掉对所有类型消息的接收。
极光推送所有的其他 API 调用都无效。必须调用 resumepush 才能恢复推送服务。恢复后,如果推送的消息还在time_to_live内,客户端会收到这条消息。
别名/标签:
需要注意,别名置空至重设别名期间,推送的消息, 在重设别名后,设备不会收到。 若需要这期间的消息也被收到,需要自己服务器对此进行判断、保存、并在客户端重设别名后,重新向极光发起推送请求。 若需要用户的历史推送消息可被查询,需要自己服务器那边去保存。
2.自定义消息
Android 不需要处于前台,其他特点:
-
只接收,不展示,需要我们自己做接收处理,并且自己代码实现 消息的展示。
-
自定义消息内容msg_content为空时,SDK 不会对消息进行广播,App 无法接收到推送的消息。
-
需要依靠 App 与极光服务器建立的长连接。
Android 需要我们在AndroidManifest.xml里配置Action - cn.jpush.android.intent.MESSAGE_RECEIVED,并且在自己写的BroadcastReceiver里接收处理,详细看官方文档说明。
什么时候使用它?
主要用于应用的内部业务逻辑和特殊展示需求,譬如:
-
需要自定义通知栏时(Android 要播放自定义的声音文件等情况)。
-
在 App 项目内的消息提醒。
-
有条件的消息提醒(譬如只让处在某一页面的用户看到该条消息)。
注意问题:
-
弄混自定义内容(字段 extras)与自定义消息(Message)
-
一般会出现的疑问是: Android 点击通知栏无法获取到自定义的内容
-
推送时 extras 是写在 Notification 下还是 Message 下?
-
点击 SDK 的通知栏 用JPushInterface.EXTRA_EXTRA获取的是写在 Notification 下的 extras 信息,没法获取写在 Message 下的 extras。
-
Message 消息和 Notification 消息 分别有各自的参数,不要混用。
3.富媒体
可以推送 Web页面、图片、声音等除普通文本之外更丰富的内容。
信息流模板推送
-
推送 Web 页面(富文本);
-
极光官网控制台上有创建富文本页面的功能模块,提供了5种模板;
-
富文本作为通知推送到客户端;
-
客户端点击通知,自动展示该富文本页面。
URL 富媒体链接推送
-
推送某个页面的 URL ,点击通知栏消息后跳转到这个 URL 指定的页面。
-
仅支持 Android ,需要JPush Android SDK 1.8.0 及以上。
-
只能通过极光推送的控制台发送。
必须将压缩包 res 中的资源放到我们自己的项目的对应文件夹,并按照官方示例 AndroidManifest配置 PushActivity 组件。
4.本地通知
适用于在特定时间发出的通知,如一些Todo和闹钟类的应用,在每周、每月固定时间提醒用户回到应用查看任务
特点:
-
不依赖于网络,无网也可以触发。
-
定时时间是自发送时算起,不受中间关机等操作的影响。
-
本地通知与远程推送的通知是相互独立的,不受 保留最近通知条数上限(Android)的限制。
-
Android 依旧需要 App 应用程序在运行。
规则:
-
本地推送保存在本地的 db 中,时间上的控制也是从 db 里面取。
-
关机或者杀进程后将收不到本地通知。
-
进程重启后,会检测 db ,准备设定时间在此之后的本地通知的推送。
-
本地通知的时间也依赖于每4分50秒的心跳来检测,所以会有一定偏差。
字符串转日期 mysql 字符串转日期格式SQL
SQL在使用过程中,经常会遇到一些奇奇怪怪的小问题,今天给大家总结一下常见的几个问题该如何处理。 小数转成百分数我们在写SQL的时候有时候希望将小数转换成百分数显示,可以这样写:SELECT CONVERT (
VARCHAR(20),CONVERT ( DECIMAL (18, 2),ROUND(A*100.0/B, 2) )
) + '%' AS Rate(提示:可以左右滑动代码)
字节转化成文件 java 字节怎么转换成进制
一、进制转换计算机在内存中以二进制【0和1】的形式存储数据,在二进制的基础上,计算机还支持八进制和十六进制这两种进制
一个二进制表示一个比特(bit),也称为位,计算机处理数据的最小单位为字节【Byte】,1字节= 8位 ,比如:00101010
但是,我们生活中习惯使用十进制,所以当人与计算机之间进行交互的时候就要涉及到进制之间的转换
进制的表示有特定的符号集和进位制:
二进制:0和1,逢二进一