先描述下基本概念,标准的iPhone应用是没有后台运行的,要实现实时推送消息到手机,需要借助Apple提供的APNS服务。
iPhone会和APNS服务器保持长连接,每台iPhone针对每个App都会有一个唯一Token,要向一台手机发送即时消息,需要自己的服务器和APNS服务器建立连接,然后将信息(Payload)和要发往的设备Token发送给APNS服务器,剩下的推送就交给Apple了。
详细的官方文档:《Local and Push Notification Programming Guide》
以下是大杂烩:
- 不要用一个开源的叫javapns的lib来推送,这个项目代码臃肿混乱,过度设计,还内存溢出;可以使用notnoop.apns
- Push会延时,也会被丢弃,似乎网络情况,Push本身带有Expiry,超过该值APNS会丢掉Push
- Push有三个基本属性,alert、badge、sound,通过将一些置空,可以实现只修改App上的气泡不出现文本、出现文本但不提示声音,发出声音而不出现任何提示等等效果
- Push除了三个基本属性,还可以附带任意json数据,但总大小不能超过256字节
- 要异步发送Push,可以将应用内的Push序列化到Redis队列再消费,并且增加队列监控
- 和国外服务的连接速度比较慢,要建立多个连接,使用多线程发送
- APNS有提供feedback服务,用于查询一个Token是否有效
- 一台iPhone上的一个App会有两种Token,一种是Developer的,一种是正式Product的,不能混用,在一个与APNS的SSL连接里,使用Developer Token向Product发送Push是无法送达的,同时在十几秒内即使用正确的Product Token发送也无法送达,效果就像直接丢弃
- iPhone上的App处于前台运行时,即使受到Push也不会在界面出现提示,此时App内的回调函数会收到
- 高速地向一台设备发送大量Push,Apple会自动丢掉部分Push
相关推荐
7. **推送通知**:为了提供及时的互动体验,需要集成推送通知服务,如Apple Push Notification Service (APNs) 或Google Firebase Cloud Messaging (FCM)。 8. **性能优化**:为了保证流畅的用户体验,需要关注内存...
4. **推送通知**:为了提高用户体验,应用需要实现推送通知,这通常通过第三方推送服务如Firebase Cloud Messaging (FCM) 或Apple Push Notification service (APNs) 实现。 5. **前端界面设计**:高仿陌陌的源码会...
消息推送服务如GCM(Google Cloud Messaging)或APNS(Apple Push Notification Service)用于在后台向用户发送通知;离线消息存储则确保在网络不稳定时,用户仍能接收到未读消息。 在服务器端,即时通讯系统需要...
5. **推送服务**:为了实现离线消息的推送,通常需要集成第三方推送服务,如Apple Push Notification Service (APNS) 和 Firebase Cloud Messaging (FCM)。这使得即使客户端应用程序在后台或关闭状态下,也能收到新...
- 使用Apple Push Notification service (APNs)实现实时的消息推送。 - 第三方服务如Firebase Cloud Messaging (FCM)也可能被集成以提高推送效率。 9. **地理位置服务**: - Core Location框架用于获取和处理...
3. **消息推送**:为了提供即时消息通知,应用通常会集成Apple的Push Notification Service (APNS)。理解如何配置证书、发送和接收推送是必不可少的。 4. **数据存储**:用户数据通常存储在本地,可以使用CoreData...