zoukankan      html  css  js  c++  java
  • 陌陌架构分享 – Apple Push Notification Service

    http://blog.latermoon.com/?p=878


    先描述下基本概念,标准的iPhone应用是没有后台运行的,要实现实时推送消息到手机,需要借助Apple提供的APNS服务。

    iPhone会和APNS服务器保持长连接,每台iPhone针对每个App都会有一个唯一Token,要向一台手机发送即时消息,需要自己的服务器和APNS服务器建立连接,然后将信息(Payload)和要发往的设备Token发送给APNS服务器,剩下的推送就交给Apple了。

    详细的官方文档:《Local and Push Notification Programming Guide

    以下是大杂烩:

    1. 不要用一个开源的叫javapns的lib来推送,这个项目代码臃肿混乱,过度设计,还内存溢出;可以使用notnoop.apns
    2. Push会延时,也会被丢弃,似乎网络情况,Push本身带有Expiry,超过该值APNS会丢掉Push
    3. Push有三个基本属性,alert、badge、sound,通过将一些置空,可以实现只修改App上的气泡不出现文本、出现文本但不提示声音,发出声音而不出现任何提示等等效果
    4. Push除了三个基本属性,还可以附带任意json数据,但总大小不能超过256字节
    5. 要异步发送Push,可以将应用内的Push序列化到Redis队列再消费,并且增加队列监控
    6. 和国外服务的连接速度比较慢,要建立多个连接,使用多线程发送
    7. APNS有提供feedback服务,用于查询一个Token是否有效
    8. 一台iPhone上的一个App会有两种Token,一种是Developer的,一种是正式Product的,不能混用,在一个与APNS的SSL连接里,使用Developer Token向Product发送Push是无法送达的,同时在十几秒内即使用正确的Product Token发送也无法送达,效果就像直接丢弃
    9. iPhone上的App处于前台运行时,即使受到Push也不会在界面出现提示,此时App内的回调函数会收到
    10. 高速地向一台设备发送大量Push,Apple会自动丢掉部分Push

  • 相关阅读:
    修理牛棚 贪心 USACO
    零件加工 贪心 题解
    花店橱窗 动态规划 题解
    动态规划 摆花 题解
    NOIP2004普及组第3题 FBI树
    实况世界杯4小游戏链接
    poj2761(treap入门)
    最大连续子序列和(分治法)
    任意区间的最长连续递增子序列,最大连续子序列和
    lca转RMQ
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4926838.html
Copyright © 2011-2022 走看看