1

关于“授权”的信息

关于“请求许可”的信息

问题是它们都需要在相同的代码中,但它们被分成两篇单独的文章。所以不清楚如何同时处理它们以及它们之间有什么区别(当然除了输入参数)。

我发现的代码只是按顺序调用这些函数:

UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: { granted, error in
  ...
})
UIApplication.shared.registerForRemoteNotifications()

这是对的吗?这些方法之间有什么区别?

PS我也不能简单地application:didFinishLoad:根据文档将它们放在里面,因为应用程序不应该从第一次运行就请求权限。

4

1 回答 1

1

这个

UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: { granted, error in
  ...
  // code here
})

询问用户他是否接受实际会显示弹出窗口的接收通知,但这(用于非本地推送通知)

UIApplication.shared.registerForRemoteNotifications()

根据文档

调用此方法以使用 Apple Push Notification 服务启动注册过程。如果注册成功,应用程序会调用您的应用程序委托对象的 application:didRegisterForRemoteNotificationsWithDeviceToken: 方法并将设备令牌传递给它。

//

if #available(iOS 10.0, *) {
    let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
    UNUserNotificationCenter.current().requestAuthorization(
        options: authOptions,
        completionHandler: {_, _ in })

    // For iOS 10 display notification (sent via APNS)
    UNUserNotificationCenter.current().delegate = self

} else {
    let settings: UIUserNotificationSettings =
        UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
    application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()
于 2018-07-11T11:41:43.897 回答