苹果推送服务(APNs)中文文档

工作中需要用到APNs服务,所以打算将APNs的官方文档翻译出来,供有需求的朋友一起参考,水平有限,难免出错,还望不吝赐教。

总览

本地通知和远程通知

本地通知和远程通知就是所谓的两种不同类型的通知,他们的区别在于一个是广播类型的通知(由NSNotificationCenter类管理),一个可以选择性地通知。用户通知可以让一个不在前台运行的应用提醒用户他有新的消息。消息的内容可以是简单的一句话,可以是一个待完成的事项,也可以是任一一种数据。当手机操作系统弹出通知时,无论是本地通知还是远程通知,外观和提醒的声音都是一样的,都能够显示通知内容,显示应用角标。

收到通知时,用户可以选择点击消息,启动对应的应用以查看详细内容,也可以选择忽略该通知,此时,应用将不被唤醒。

摘要

本地通知和远程通知对于用户来说可能是一样的,但是他们有不同的应用场景,也有不同的实现方法。

本地通知和远程通知的对比

很多App希望能够在某一个特定的时间或者有有趣的事情发生时,能够通知App的使用者(即使App当前不在前台运行)。本地通知和远程通知都能够实现这样的需求。
如下所示,本地通知和远程通知具有不同的应用场景与条件限制:

  • 本地通知发送是由App本身控制的,它不需要App连上互联网;
  • 远程通知,也叫推送通知,它是由App的服务器(Provider)推送的并且经过APNs服务下发给设备的。

注册、调度和处理用户消息

如果要在某一个特定的时机发送本地通知,App需要注册一种通知类型(iOS8或者之后的版本),创建好通知(使用UILocalNotification或者NSUserNotification),并且设置好通知的时间。但是如果一个设备希望收到远程的推送通知,则App必须要注册通知类型,并且将用于标识不同设备的deviceToken上传给App自己的服务器(Provider)。

如果操作系统下发了一条本地或者远程通知,并且当前App不在前台运行,操作系统将会以弹出通知、播放声音、显示角标等方式通知用户,此时如果用户点击消息中的按钮,则对应的App将会被启动,并且会将收到的本地通知或者远程通知的内容传递给某个函数。如果收到通知时,App运行在前台,App代理将会默默地接收通知。

iOS8之后,开发者可以自定义通知消息中点击按钮时执行的操作,此外,当用户到达某一特定位置时,也能够收到基于位置推送的通知。

苹果消息推送服务

苹果推送服务(APNs)是用于给设备下发远程通知的一个服务。手机上的App和APNs服务器会建立一个安全的加密的连接以能够接收到通知消息。App的服务器同样也会和APNs建立一条持久的加密的安全连接,用于将消息推送给APNs。当需要给某个App推动通知时,App的服务器会将消息首先发给APNs,然后由APNs下发到手机。

新版的APNs API于2015年12月启用,它是一个异步的,基于HTTP2的用于给App服务器发送消息给APNs的接口。

远程通知的安全保障

为了推送一条通知到你的手机,你必须到Apple的Member Center去申请SSL证书。从2015年12月开始,新版的基于HTTP2的API允许开发者在测试环境和正式环境使用同一个证书。此外,使用该证书不仅能发消息到主App,也能将消息发给相关联的Apple Watch和后台运行的VoIP服务。

必备知识

为了实现本地通知和远程推送通知,开发者最好对SSL/TLS和Socket等相关知识有所了解。



后面章节的翻译敬请期待…

深入了解本地通知和远程通知

注册、调度、处理用户通知

苹果消息推送服务(APNs)介绍

授权和开发

消息格式

APNs开发者接口

你可能感兴趣的:(APNs)