本地通知和远程通知,可以在当新事件和事务发生时通知用户,甚至当你的应用程序不是在前台运行。例如,社交应用可以通知用户有一个新消息,日历应用可会提醒用户即将到来的约会。本地和远程的通知之间的区别是直接的:
- 随着本地通知,您的应用程序在本地配置的通知的详细信息,并将这些信息传到系统中,然后当你的应用程序不在前台时发送本地通知。
- 随着远程通知,您使用公司的一台服务器通过苹果推送通知服务(简称APNs)将数据推送到用户设备。iOS上,tvOS,watchOS和MacOS支持远程通知。
本地和远程通知,要求您将添加代码,来支持通知的调度和处理。对于远程通知,还必须提供服务器环境,能够接收来自用户设备的数据和发送通知相关的数据到APNs,这是苹果提供的服务(处理远程通知到用户设备的传输)。
用户通知和用户通知UI框架
iOS10,watchOS 3和tvOS 10开始,用户通知框架提供了便利的方式来调度和处理本地通知。除了管理本地通知,该框架还支持远程通知的处理,虽然远程通知的配置仍然需要一些特定平台的API。因为它是一个独立的框架,可以在创建的应用程序或所创建的extensions使用,如WatchKit extension。
注意
在MacOS,远程通知的配置和处理,需要使用的是AppKit框架中特定于平台的方法。
用户通知架构还支持创建通知服务应用程序的扩展,extensions在通知发出之前可以让您修改远程通知的内容。如果你的应用程序加入了一个通知服务的extensions,系统会将通知传送给扩展,然后再将其传递给用户。您可以使用这种extension,来加密终端到终端的通知,发送之前修改通知内容,下载图片或多媒体。
User Notifications UI framework
是 User Notification framework
的伴侣,可以让你自定义系统的通知界面的外观。您可以使用User Notifications UI framework
来定义一个通知内容的extension,其任务是提供了自定义view controller,来显示在通知界面的自定义内容。系统会显示您的自定义view controller而不是默认的系统界面。您可以使用这种extension,纳入媒体或动态内容到您的通知接口。
有关User Notification framework
的更多信息,请参阅 User Notifications Framework Reference。有关类的信息,你用它来创建一个通知内容的应用程序扩展,请参阅User Notifications UI Framework Reference。
何时使用本地和远程通知
因为在iOS上,tvOS和watchOS应用程序并不总是在运行,本地通知提供一种方式来提醒用户,当您的应用程序有新的信息展示。例如,在收到了一些有趣的信息时,在后台从服务器提取数据的应用程序,可以安排本地通知。本地通知也非常适合一些应用程序,如日历和提醒APP需要在特定的时间或在达到特定的地理位置,以提醒用户。
当部分或全部应用程序的数据是由公司的服务器管理,远程通知是需要的。随着远程通知,你可以决定何时要推送通知到用户的设备。例如,一个社交应用程序将使用远程通知,通知用户新邮件到达了。因为他们是从你的服务器发送,您可以随时发送远程通知,包括当应用程序不是在用户的设备上运,。
本地和远程通知对用户是一样的
在给定的设备上给用户呈现时,本地和远程通知没有区别。这两种类型的通知具有相同的默认外观,这是由系统提供的。您可以自定义外观,但主要是选择你要如何通知用户。具体而言,您选择发送通知的下列选项之一:
- 屏幕上的弹窗或横幅
- 图标上的badge
- 声音
在配置本地和远程通知,选择交互类型,最适合您正在提供的信息类型。例如,一个待办事项应用程序可能有一个事项列表,每一个都有项目必须完成时间和优先级列表。对于高优先级项目,你需要显示警报,在完成时间的推移,让用户知道自己应该在马上完成项目。对于低优先级的项目,您可能适用badge或播放声音,以提供一个更微妙的提醒来完成该项目。
提醒让你直接显示信息给用户,但badge和声音的含义取决于您的应用程序。您可以使用不同的声音进行沟通特定类型的事件,如消息的到达或任务的完成。badge总是含有一个数值,并通常用于指示等待用户的关注的项目数。
图1-1 应用程序图标带有badge(IOS)
始终谨慎使用本地和远程通知,以免打扰用户。该系统允许用户针对每个APP,启用和禁用alert,声音和badge。虽然通知可能仍然被传递到您的应用程序,系统会通知用户仅当前启动的选项。如果用户完全禁用通知,APNs不传输通知到用户的设备,本地通知的调度会失败。