`
RamosLi
  • 浏览: 120064 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

苹果通知推送服务(APNS)一些关键特性摘要

阅读更多

前段时间,仔细研究了APNS的文档,把一些关键的地方记录了下来,弄懂这些对于理解APNS的规则,至关重要。

 

1. If APNs attempts to deliver a notification but the device is offline, the notification is stored for a limited period of time, and delivered to the device when it becomes available.

假如用户手机不在线,可能没有信号或者关机吧,APNs会存储转发,等用户在线时再发送

 

2.Only one recent notification for a particular application is stored. If multiple notifications are sent while the device is offline, each new notification causes the prior notification to be discarded. This behavior of keeping only the newest notification is referred to as coalescing notifications.

如果用户不在线,通知会合并,只会保留最新的一条。假如你给用户发了两条通知,但用户反馈说,只收到了一条,那么很可能是用户当时不在线,APNs的合并策略生效,只保留了最近一条

 

3.If the device remains offline for a long time, any notifications that were being stored for it are discarded

 

4.The maximum size allowed for a notification payload is 256 bytes; Apple Push Notification Service refuses any notification that exceeds this limit.

这个很重要,payload,就是最后生成的那段Json,不得超过256字节。如果超过了,建议去掉一些不需要的参数,把alert,就是提示信息的字数减少

 

5.don’t repeatedly open and close connections. APNs treats rapid connection and disconnection as a denial-of-service attack.

6.If you send a notification that is accepted by APNs, nothing is returned.

发送成功的木有返回,只有发送失败的才会返回

 

7.If you send a notification that is malformed or otherwise unintelligible, APNs returns an error-response packet and closes the connection. Any notifications that you sent after the malformed notification using the same connection are discarded, and must be resent.

这条非常重要,如果有error-response,那么这条之后的通知都需要重发。有很多开源的库,在发苹果通知时都没有检测error-response,如果你不小心用了,那么用户很可能反馈“怎么没有通知啊”

 

8.The notification identifier in the error response indicates the last notification that was successfully sent(实际情况不是,实际上返回的是出错的那条通知的ID). Any notifications you sent after it have been discarded and must be resent.When you receive this status code, stop using this connection and open a new connection.

这是对上一条的补充,如果出错了,需要关闭当前的连接,并且重新连接再发。error-response中返回的通知ID,可以帮助我们找出哪条出错了,这样就能知道哪些需要重发了

 

9.When a push notification cannot be delivered because the intended app does not exist on the device, the feedback service adds that device’s token to its list.

APNS的feedback service会返回那些已经卸载的设备的token--device_token。存储这些token,下次就不用再给他们发了,可以节省点资源。需要注意的是:feedback的接口读取一次,APNS就会清空它的列表,下次再读取时,返回的就是这两次读取之间这段时间新产生的device_token。

 

只有把这些搞清楚,才方便我们理解苹果推送的规则,知道自己推送上的一些不足之处。搞懂这些规则后,我自己封装了个Java的类库,已经开源并放到Github上了,下一篇文章奉上详情。

6
2
分享到:
评论
6 楼 邓祖洪 2017-06-01  
RamosLi:
我下载你了的TestDbayAPNS确实可以做到断网重连收到最后一条消息。但你有没有研究过http2(Pushy)推送?
http2到APNs服务器但是断网重连就收不到最后一条。
5 楼 ceekay_ 2015-12-16  
大神,这个程序怎么是短连接啊,不是应该是长连接吗?
4 楼 Allen_smile 2015-11-04  
非常好, 赞一个
3 楼 molebinn 2015-09-24  
2 楼 sanshizi 2014-03-01  
   非常好, 赞一个
1 楼 liangcoder 2013-09-11  
研究的很仔细

相关推荐

    基于Java语言实现的苹果推送服务APNS4J设计源码

    该项目是一款基于Java语言实现的苹果推送服务APNS客户端库——APNS4J的设计源码,共包含37个文件,主要包括31个Java源文件、1个Git忽略文件、1个YAML配置文件、1个LICENSE文件、1个README文本文件、1个Markdown文件...

    iOS苹果推送apns测试工具.zip

    总之,`iOS苹果推送apns测试工具.zip`包含的资源对于iOS开发者来说是至关重要的,它简化了APNs推送的测试过程,有助于确保应用在实际使用中的通知功能正常、稳定。通过熟练掌握APNs的工作原理和使用测试工具,开发者...

    Java向苹果服务器推送消息(Java实现HTTP/2协议发送APNS)

    APNs(Apple Push Notification service)是苹果公司提供的推送服务,允许开发者将消息推送到用户的iOS设备上。本教程将重点讲解如何使用Java实现基于HTTP/2协议的APNS推送,并假设你已经对JDK 11及以上版本有一定的...

    APNS 苹果消息推送项目源码,运行即用,代码+数据库+文档全打包

    苹果推送服务(Apple Push Notification service,简称APNs)是苹果公司提供的一项服务,允许开发者将实时的通知信息推送到iOS、macOS以及watchOS等设备上。这个“APNS 苹果消息推送项目源码,运行即用”包含了实现...

    C# 苹果推送后台APNS

    苹果推送通知服务(Apple Push Notification service,简称APNS)是苹果公司为iOS、iPadOS、watchOS、tvOS等设备提供的一项功能,允许应用程序在未运行时接收消息。这些消息可以是提醒、通知或者数据,使得开发者...

    苹果推送通知服务(APNs)编程

    苹果推送通知服务(APNs,Apple Push Notification service)是苹果公司提供的一项允许应用程序开发者向其iOS、iPadOS、watchOS、macOS设备用户发送实时通知的服务。通过APNs,开发者可以构建应用程序,使得用户在不...

    本地推送以及APNS推送push

    本地推送和APNS推送是iOS应用中实现消息通知的关键技术,它们使得用户即使在应用未运行的情况下也能接收到重要信息。下面将详细讲解这两种推送方式的原理和交互机制。 一、本地推送 本地推送(Local Push)是iOS...

    iphone消息推送APNS

    **苹果推送通知服务(Apple Push Notification service,简称APNS)** APNS是苹果公司提供的一项服务,用于向iOS、iPadOS、watchOS、tvOS以及macOS设备推送通知。通过APNS,应用开发者可以在他们的应用不在前台运行...

    最新java整合APNS推送服务

    Java整合APNS推送服务是将Java应用程序与Apple Push Notification Service(APNS)相结合,以便能够向iOS和tvOS设备发送即时消息。APNS是苹果公司提供的一个服务,它允许开发者在用户不打开应用的情况下,向他们的...

    java调用apns推送的实现

    Java调用APNs(Apple Push Notification service)推送是iOS应用开发者在进行远程通知服务时常见的需求。APNs是苹果提供的一项服务,允许开发者将实时消息推送到用户的iOS设备上,如应用更新、消息提醒等。在Java...

    java进行苹果APNS消息推送

    Java进行苹果APNS(Apple Push Notification Service)消息推送是一项在iOS和macOS应用程序中实现远程通知功能的关键技术。本文将详细介绍如何使用Java实现这一过程,同时关注`javapns`库和`bcprov-jdk`加密组件的...

    iphone 推送通知 服务器端java 实现

    APNs是苹果公司的远程通知服务,当应用程序在后台或未运行时,可以通过APNs将消息推送到用户的设备上。APNs通过安全的HTTP/2协议与服务器通信,服务器需要向APNs发送包含令牌、通知信息以及用于加密的证书的推送包。...

    苹果推送服务

    苹果推送服务(Apple Push Notification service,简称APNs)是苹果公司提供的一项用于向iOS设备推送通知的服务,它允许开发者通过推送通知的方式向用户提供信息。这在移动应用开发中尤为重要,因为它有助于提高用户...

    IOS推送(APNS)

    苹果推送通知服务(Apple Push Notification service,简称APNs)是苹果公司为iOS设备提供的一种实时推送通知服务。它允许开发者向用户的iOS设备(如iPhone、iPad和iPod Touch)发送推送通知。这种通知可以在应用...

    Android推送之APNS 网站调用提供推送技术

    尽管APNS是苹果公司的服务,主要为iOS设备提供推送,但有一些情况,例如目标用户群体包含iOS设备用户或者开发者需要跨平台兼容,APNS在Android上的应用也是必要的。 首先,理解APNS的工作原理至关重要。APNS是一个...

    关于IOS_APNS推送消息(iphone端+服务端)

    在iOS应用开发中,Apple Push Notification service (APNs) 是苹果公司提供的一个关键服务,用于向用户的iPhone设备发送远程通知。这些通知可以是系统级别的消息,也可以是应用程序自定义的内容,比如新消息提醒或者...

    C# apns 推送

    总结,C#结合APNS推送技术,可以实现实时、高效地向苹果设备发送通知。在VS2008和SQL2008环境中,我们需要管理Device Tokens,构建推送消息,连接APNS服务器并处理可能出现的错误。通过不断优化和调试,可以构建出...

    php-APNS苹果推送通知服务的服务器端公共类.zip

    APNS(英文全称:Apple Push Notification Service),中文翻译为:苹果推送通知服务,该技术由苹果公司提供的APNS服务,下面是一个比较完善的苹果推送通知服务的php服务器端公共类.

    Apns消息推送测试工具Debug版本V1.0

    `PushSharp.Apple.dll`和`PushSharp.Common.dll`是PushSharp库的一部分,这是一个强大的跨平台APNs推送服务,它支持多种推送服务,包括Apple的APNs,使得推送消息的实现更为便捷;`IOSPush.Toolkit.pdb`是程序的调试...

    苹果 APNS2 推送DEMO

    【苹果APNS2推送DEMO】是针对Apple Push Notification service(APNs)第二版的一个示例项目,旨在帮助开发者理解和实现iOS与macOS应用的远程通知功能。APNs是苹果公司提供的服务,允许应用程序在后台接收来自服务器...

Global site tag (gtag.js) - Google Analytics