app推送app消息推送实现发送方式是什么意思

2013年10月 Java大版内专家分月排行榜第二2013年3月 Java大版内专家分月排行榜第二2013年2月 Java大版内专家分月排行榜第二
2013年7月 Java大版内专家分月排行榜第三2013年5月 Java大版内专家分月排行榜第三2013年4月 Java大版内专家分月排行榜第三
2015年5月 Java大版内专家分月排行榜第二2013年5月 Java大版内专家分月排行榜第二
2011年5月 Java大版内专家分月排行榜第三2011年1月 Java大版内专家分月排行榜第三
2013年10月 总版技术专家分月排行榜第三
2014年3月 Java大版内专家分月排行榜第一2014年1月 Java大版内专家分月排行榜第一2013年12月 Java大版内专家分月排行榜第一2013年11月 Java大版内专家分月排行榜第一2013年10月 Java大版内专家分月排行榜第一
2013年10月 Java大版内专家分月排行榜第二2013年3月 Java大版内专家分月排行榜第二2013年2月 Java大版内专家分月排行榜第二
2013年7月 Java大版内专家分月排行榜第三2013年5月 Java大版内专家分月排行榜第三2013年4月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。1788人阅读
移动应用(3)
极光推送是为 App 提供第三方推送服务的平台之一,它提供四种消息形式:通知,自定义消息,富媒体和本地通知。
笔者将基于官方说明与个人理解来谈一下这四种消息。本篇为 iOS 篇,。
Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息。
* iOS :JPush 代理 Apple 官方的 APNs 通知。*
使用 JPush 中的通知,相当于使用苹果官方的通知推送。
iOS 10 新增了 delegate 协议方法,极光新版 SDK 封装了这两个方法来适配,有开发者想同时使用 JPush 的通知和苹果的通知来实现他们不同的需求,然后会发现,在 iOS 10 客户端只会走其中的一个方法,互相有冲突。
这里需要说明的是:
极光就是封装的苹果的 APNs ,如果我们自己再封装 APNs ,两个地方封装的是相同东西的时候,肯定只有一个地方有效了。
如果你想同时使用 Apple 官方的推送和极光的推送,在客户端只需要用极光代理的方法即可,来自 Apple 官方的推送,极光的代理方法也是可以正常处理的。
APNs 通知的流程是这样的
我们可以调用极光的 API 发起推送请求,也可以通过极光官网控制台推送。
请求在参数要求上基本正确——请求成功,返回 msgid (这条消息的 ID 标识),返回 200(成功)或由极光判断的推送失败(一般是 );参数错误,有返回错误码。
极光处理该条请求,将这条请求发给苹果 APNs 服务器,一般都是秒内处理(非 VIP 通道偶尔可能会发生堵塞)。
APNs 服务器将这条消息推送到 iOS 设备上,这期间,可能会产生延迟;可能会因为证书问题、已卸载、token 失效、推送环境与设备环境不一致等情况由 Apple 判断为错误;没有问题时则会被设备收到,由 iOS 系统控制进行展示。
注:我们测试时若收不到消息,极光社区有总结一个,基本可以解决问题;如果自己排查不出,可以直接找官方帮忙查询,这里 和消息的 msgid 就是必须提供的信息。
APNs 通知的几个特点
通知栏的展示完全由 iOS 系统控制,左侧图片是自动获取的 App 图标,是不可动态改变的。
iOS 10 以下系统:
APNs 通知是 只能在 App
处于后台或杀死时才能展示的。
iOS 10 系统:
可以实现在前台展示 APNs
通知,实现方法,前台收到 APNs 通知后就会走这个方法。
在前台点击通知消息后也走didReceiveNotificationResponse方法(即后台收到通知后,点击通知的回调方法)。
获取通知内容
推送一般的 APNs 通知,客户端在 点击了通知栏消息之后才会调用对应的方法去获取到消息的内容, 点击图标进入 App 是无法获取到消息的。
如果需要在不点击通知栏的情况下,可以获取到消息内容,可以推送 ,这类消息的规则是:
客户端需要处于Background 或 Suspended 状态,被杀死后无法调起该方法。
该类消息被收到后,Background 方法就会被调用,获得信息内容。
点击了展示该消息的通知栏,会再次调用 Background 方法。
点击了图标 这个操作并不会 再次调用 Background 方法。
手机断网后,根据 Apple 的逻辑,是 只保存 1 条离线消息
此处判断手机断网,是指手机无法与 Apple 服务器进行连接。
可能情况有:网络断开、网络环境有限制(内网)、某网络运营商连接不通畅。
测试时可尝试切换网络。
与证书和环境有关:
推送的环境 必须与 App 的打包环境 一致。
苹果官网的证书、极光官网上传的证书、 App
打包的证书 必须完全一致。
JPush 无法控制 APNs 通知的展示与否,不过如果你想实现关闭 APNs 通知,有如下方法:
一般是给一个文字说明:请在手机[设置]-[通知]-[XX App]选择打开或关闭通知;
也可以调用反注册代码[[UIApplication sharedApplication] unregisterForRemoteNotifications];进行关闭。
但有一个影响是:iOS9 设备使用代码反注册 APNs ,再调用代码注册 APNs ,需要杀死应用后,再重新开启应用才会有 APNs 提示(这里可能与系统本身 bug 有关)。
也可以用极光的置空别名/标签的方法去达到关闭通知的效果,相应的,置空期间的消息将不会收到。
推送时,如果通知内容( alert )为空,那么收到推送时是默认不展示横幅的。
iOS 10 的 alert 里面包括了 body 、title 、subtitle,后两者是可选的, body 为空则不展示。两种方式:
"alert" : "hello, JPush!",或者
"alert" : {
"title" : "JPush Title",
"subtitle" : "JPush Subtitle" ,
"body" : "JPush Body"
这里要注意的是 * iOS 10 前台展示的代码方法 *里面也有三种展示(alert、badge、sound)的选择,如果没有写 alert ,那么也是不会有横幅提醒的。
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);
2.自定义消息
由 JPush iOS SDK 提供的应用内消息功能,此消息不经过 APNs 服务器,完全由 JPush 提供功能支持。
只接收,不展示,需要我们自己做接收处理,并且自己代码实现 消息的展示。
怎么让 App 收到自定义消息后,也显示横幅弹框,并显示在苹果手机的通知列表里呢?
自己写的通知栏只能在 App 内部进行展示,只有 APNs 通知才可以展示在通知列表中。
间接实现的方法:
* 同时发内容一样的自定义消息和 APNs 通知消息(APNs 用来展示,自定义消息用来取数据)
* 自定义消息中携带定义好的 extras ,客户端收到后根据事先设定的规则去设置一个本地通知,用本地通知来展示这条消息
自定义消息内容msg_content为空时,SDK 不会对消息进行广播,App 无法接收到推送的消息。
需要依靠 App 与极光服务器建立的长连接,所以 iOS 必须当 App 处于前台时才能接收到。
iOS 需要在 delegate 类中注册通知并实现回调方法 networkDidReceiveMessage,。
对 iOS 推送自定义消息无需考虑环境和证书问题。
如果我只需要用极光的自定义消息,还需要配置证书吗?毕竟制作证书需要付费参加 Apple 的开发者计划。
首先了解极光这边的 2 个要求:
1.极光要集成成功,要获得 registrationID ,需要 device token 。
2.极光控制台,必须要上传证书,推送时 iOS 才可以被点击。
两个办法:
1.iOS 端,我们可以自己随便的拼接一个合乎规范的 token 并给 JPush ,以注册成功,获得registrationID。要推送消息,则采取的方式进行。
2.找朋友用付费账号生成一个生产环境证书,按照配置要求集成成功,在控制台上传好证书。那么在极光控制台或自行调用 API 都可以推送。
iOS 在手机端关闭通知和调用反注册代码对自定义消息的接收有影响吗?
没有影响。
自定义消息是应用内消息,跟apns无关
只要 Jpush 这边注册 ok了,获取到了registrationID,长链接建立起来,就可以收到。
什么时候使用它?
推送保证不会丢失的消息。
APNs 一般只做为通知提醒,譬如 IM,退到后台,收到消息提醒,点击进去后还是走应用内消息收取,确保不丢。(在极光这边也有提供)
JPush 的应用内消息,会免费保留 5 条离线消息
iOS 需要在前台展示消息时(iOS 10 新增接口之前)。
在 App 项目内的消息提醒。
有条件的消息提醒(譬如只让处在某一页面的用户看到该条消息)。
可以推送 Web页面、图片、声音等除普通文本之外更丰富的内容。
仅支持 Android ,需要JPush Android SDK 1.8.0 及以上。
4.本地通知
适用于在特定时间发出的通知,如一些Todo和闹钟类的应用,在每周、每月固定时间提醒用户回到应用查看任务。
不依赖于网络,无网也可以触发。
定时时间是自发送时算起,不受中间关机等操作的影响。
中也和 远程 APNs 通知一样,在不同的状态,不同的系统下,对应有几种获取消息的方法,App 被杀死也是可触发的。
本地通知里面的 body 不写也是没有横幅展示的,官方示例里面的这一句 content.body = @"This is a test code";
推送自定义消息,触发本地通知去展示。
* 使用第三方服务时,应该养成 多看日志,多关注实际请求数据,多看回调和 error 的习惯。
* 要求官方配合查询或者咨询问题时,提供详实的信息,可以大大节约彼此的时间。
* iOS 10 的推送有一些新变化,可以阅读这篇文章来系统的了解一番。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19059次
排名:千里之外
原创:49篇
(1)(8)(10)(15)(9)(3)(1)(3)14:41 提问
java后台对app推送消息
公司现在是做代驾软件的,有一个客户端app和一个司机端app,后台专门写了一个客户端提交订单的接口,客户提交代驾订单以后后台接收订单信息,然后计算最近的司机,并将订单信息通过第三方推送“个推”直接推送给这个司机(前面这些功能已经实现),司机收到订单以后只能选择接单,或者不操作,如果不操作,一定时间段内该订单就会流转给下一个最近的司机,对于这种司机一定时间段内无响应的的处理,一般的java后台都是怎么实现的,求大神帮忙!
按赞数排序
把附近的人放进一个列表,循环此列表,做一个计时器,每发出一个推送都要做一个计时器,接单了,发给后台数据,确定接单后取消计时,
再进行下一个订单的处理,考虑到性能的问题最好自己手写一些计时器
app是ios还是android?
不好意思,才来看记录,以为没人会回答我的问题,后来自己实现了,基本上和1楼说的差不多,通过计时器实现的,非常感谢了!
后台将订单推送给APP之后开始计时,超过了指定的时间还没有收到客户端的响应,就可以当成客户端不接单啊,然后进行流转
不用计时器,计时器麻烦,只需要让两个app连一个后台,在数据库中找,在没有接单的时候,一秒或者三秒调用一下接口。要是有接单的时候,把状态改了,然后不加入下次循环。
其他相似问题}

我要回帖

更多关于 app推送消息文案范例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信