iOS APNs的几个问题

1、关于推送机制:

APNs推送机制

从上图我们可以看到大概:

1、应用程序注册消息推送。

2、iOS从APNS Server获取device token,应用程序接收device token。

3、应用程序将device token发送给服务端程序。

4、服务端程序向APNS服务发送消息。

5、APNS服务将消息发送给iPhone应用程序,iOS系统。

2、关于Certificates:

除了APP 的开发证书、发布证书之外,还需要个给我们server的SSL证书,此证书用于server与APNs发送数据的加密和安全认证。

在APPID配置中生成该证书(和其他证书一样有两种即Development SSL Certificate、Production SSL Certificate),以开发环境为例:下载证书是aps_development.cer
在钥匙串中。这个证书就是我们的server需要的,后台的开发语言不同这个证书的格式也不同,所以根据不同的后台要对证书格式转换。

  • 如果是PHP后台:需要把证书转为aps_development.pem格式,同时导入该证书的秘钥key.p12文件也转为.pem格式。打开终端操作如下步骤:
1、将aps_development.cer转换为pem文件。
$ openssl x509 -in aps_development.cer -inform der -out aps_development.pem

2、将p12私钥文件转换为pem文件。
$ openssl pkcs12 -nocerts -out key.pem -in key.p12 

3、将两个文件合成同一个。
$ cat aps_development.pem key.pem > ck.pem

4、测试证书是否有效。
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert aps_development.pem -key key.pem 
如果有效的话,会输出一堆信息,并且建立连接,否则不会成功建立连接。

最终的ck.pem就是要交给后台的证书文件,如果有还需证书的密码。

  • 如果java后台:证书安装后导出.p12格式。

无论是Development SSL Certificate还是Production SSL Certificate 都有过期时间的。而ProductionPush SSL Certificate的有效期是一年。需要注意在过期之前生成新的证书给server,以免影响使用。

3、关于deviceToken:

首先清楚开发环境和生产环境下的deviceToken是不一样的。同一环境下token也是会变的,比如系统恢复设置或刷机操作。

app向iOS系统注册通知后,APNs 会返回这个标记该设备唯一性的token,然后把这个token传给我们的server作为推送消息的目标设备标记。

每次要推送消息时,sever从数据库取出deviceToken,如果用户把我们的app删了,再发送消息肯定是收不到了,所以server要不断的更新数据库的deviceToken去掉那些无效的deviceToken。APNs的The Feedback Service就是解决这个场景的问题的。当APNs发送消息给iOS设备时,由于根据APPID信息找不到该应用所以发送失败,会给APNs反馈信息标记该token。所以server通过这里可以获取无效的token然后数据库中清除。

4、关于APNs接口:

消息推送:

开发接口:gateway.sandbox.push.apple.com:2195

发布接口:gateway.push.apple.com:2195

反馈服务:

开发接口:feedback.sandbox.push.apple.com:2196

发布接口:feedback.push.apple.com:2196

所以不同的环境下、不同的证书、不同的地址、不同的token,所以实际中要注意能够一一对应,否则无法完成消息推送。

5、关于消息格式:

消息就是一json 格式的字典,eg:

{
    "aps" : {
        "alert" : {
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
            "action-loc-key" : "PLAY"
        },
        "badge" : 5
    },
    "acme1" : "bar",
    "acme2" : [ "bang",  "whiz" ]
}

消息最大长度不是网上很多说的256了,根据使用的HTTP版本不同而不同了,所以大多现在http1.0,最大长度也就是2K。官方描述如下:

For regular remote notifications, the maximum size is 4KB (4096 bytes)
For Voice over Internet Protocol (VoIP) notifications, the maximum size is 5KB (5120 bytes)
NOTE
If you are using the legacy APNs binary interface to send notifications instead of an HTTP/2 request, the maximum payload size is 2KB (2048 bytes)

以上字典中的key都是固定的。官方链接描述

当要发送消息时后台按照如下格式拼接,


pushformat.png

然后APNs在按照此格式解析数据得到所需的token,然后发送给ios设备。

梦想在其他都会在.jpg

THE END

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容