iOS中的远程通知
由Apple推送通知服务(APN)管理的远程通知是一种有效的方式,即使应用程序(例如消息传递应用程序)处于非活动状态,也可以将任何数据更改传达给用户。
先决条件:
- 您需要注册Apple Developer Program才能使用此功能并拥有实际的设备。 推送通知在模拟器上不起作用。
- 在开发人员帐户中创建一个应用程序ID,并为其启用“推送通知”服务,例如com.notifications.sample。 使用与您的捆绑包标识符相同的应用程序ID。
- 接下来,您需要在Capabilities中启用推送通知。
- 要求授权和注册
- 始终要求用户允许显示通知,然后向APN注册您的应用。 在应用启动完成之前,导入UserNotifications框架并在“ application:didFinishLaunchingWithOptions:”中执行这些操作。 UNUserNotificationCenter是管理通知相关活动的中心对象。
- 用户可能不会授权通知,也可能随时更改应用程序的通知设置。 因此,在注册远程通知之前,请检查当前设置。
2. 设备令牌
- 注册成功后,您会在“ application:didRegisterForRemoteNotificationsWithDeviceToken:”中收到设备令牌;如果注册失败,则会在“ application:didFailToRegisterForRemoteNotificationsWithError:”中收到错误消息 。 因此,在AppDelegate中实现这两个委托方法。
- APNs使用其唯一的设备令牌识别任何设备,并将通知路由到该设备。 因此,为了接收推送通知,请将设备令牌发送到提供程序服务器。 每当必须发送通知时,提供程序服务器还会将通知有效负载和设备令牌发送到APN。
注意:每次从系统询问设备令牌之前,都要先将其发送到服务器。 当用户从备份还原设备,重新安装操作系统或在新设备上安装应用程序时,APN会发布新的设备令牌,因此请勿缓存设备令牌。
3. 处理通知
- 您必须在应用完成启动之前将对象分配给委托,无论是在应用委托的application(_:willFinishLaunchingWithOptions 🙂还是application(_:didFinishLaunchingWithOptions 🙂中。
- 为了处理在应用程序在前台运行时到达的通知或处理通知上的用户操作,请在对象中实现UNUserNotificationCenterDelegate协议的方法,然后将该对象分配给共享UNUserNotificationCenter的委托属性。 通知到达时会触发这两个委托方法中的任何一个,具体取决于应用程序是在前台运行还是在后台运行。
- 当应用程序在前台运行时,不会显示通知。 因此,为了显示警报或播放声音或标记图标, 请在complementHandler ()中传递类型为UNNotificationPresentationOptions的任何属性。
相关话题:
iOS中的本地通知
具有自定义操作的通知