iOS 10 中的远程通知
Remote Notifications in iOS 10
所以我们都知道 Apple 今年夏天推出了 UserNotifications Framework,它很棒。
根据 Apple 的 API 参考资料和关于此框架的 WWDC Session,我们现在有一种注册推送通知的新方法,如下所示:
UNUserNotificationCenter.current().requestAuthorization(options: [options], completionHandler: {})
但显然此方法不会从 APNs 服务器获取 deviceToken,因此 Apple 在 UIKit 中保留了一些 API,如下所示:
UIApplication.shared.registerForRemoteNotifications()
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){}
这是注册和获取远程通知的 deviceToken 的两种方法。
所以如果我只想注册远程通知,我还需要做 requestAuthorization
事情吗?或者 requestAuthorization
只是为了注册本地通知?
另外,即使我只想注册远程通知,如果我需要实现它们,我应该在哪里写registerForRemoteNotifications()
?我应该把它写在 requestAuthorization
中的 completionHandler
中,还是应该把它写在外面,就好像这两个 request
和 register
的东西是 运行 并行的?
如果您只想注册远程通知,您仍然需要requestAuthorization
,因为这是您询问用户是否可以显示警报和声音的方式,这适用于本地和远程通知。
您可以在 requestAuthorization
完成处理程序之外调用 registerForRemoteNotifications
并允许它们并行 运行。
更新:
registerForRemoteNotifications
获取用户的令牌无论他们是否他们已经批准推送通知。
如果用户拒绝,这有什么用?
在未来的任何时候(在您的应用程序调用 requestAuthorization
以表明它想要发送通知之后),用户可以进入“设置”应用程序,点击您的应用程序,然后打开允许通知设置。
如果您已经在使用用户的令牌发送通知,则这些通知将在用户启用权限后开始发送,您无需执行任何操作。
所以我们都知道 Apple 今年夏天推出了 UserNotifications Framework,它很棒。 根据 Apple 的 API 参考资料和关于此框架的 WWDC Session,我们现在有一种注册推送通知的新方法,如下所示:
UNUserNotificationCenter.current().requestAuthorization(options: [options], completionHandler: {})
但显然此方法不会从 APNs 服务器获取 deviceToken,因此 Apple 在 UIKit 中保留了一些 API,如下所示:
UIApplication.shared.registerForRemoteNotifications()
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){}
这是注册和获取远程通知的 deviceToken 的两种方法。
所以如果我只想注册远程通知,我还需要做 requestAuthorization
事情吗?或者 requestAuthorization
只是为了注册本地通知?
另外,即使我只想注册远程通知,如果我需要实现它们,我应该在哪里写registerForRemoteNotifications()
?我应该把它写在 requestAuthorization
中的 completionHandler
中,还是应该把它写在外面,就好像这两个 request
和 register
的东西是 运行 并行的?
如果您只想注册远程通知,您仍然需要requestAuthorization
,因为这是您询问用户是否可以显示警报和声音的方式,这适用于本地和远程通知。
您可以在 requestAuthorization
完成处理程序之外调用 registerForRemoteNotifications
并允许它们并行 运行。
更新:
registerForRemoteNotifications
获取用户的令牌无论他们是否他们已经批准推送通知。
如果用户拒绝,这有什么用?
在未来的任何时候(在您的应用程序调用 requestAuthorization
以表明它想要发送通知之后),用户可以进入“设置”应用程序,点击您的应用程序,然后打开允许通知设置。
如果您已经在使用用户的令牌发送通知,则这些通知将在用户启用权限后开始发送,您无需执行任何操作。