需要有关在iOS中请求通知权限的说明

时间:2018-07-11 11:33:00

标签: ios swift push-notification unusernotificationcenter unusernotification

Info about "authorization"

Info about "requesting permission"

问题在于它们都需要在相同的代码中,但是它们被分为2个单独的文章。因此,目前尚不清楚如何同时处理它们以及它们之间有什么区别(当然,输入参数除外)。

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

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

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

P.S。根据文档,我也不能简单地将它们放在application:didFinishLoad:内,因为该应用程序不应在首次运行时就请求权限。

1 个答案:

答案 0 :(得分:1)

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

向用户询问是否接受接收通知,该通知实际上将显示弹出窗口,但这(用于推送通知不是本地的)

UIApplication.shared.registerForRemoteNotifications()

根据Docs

  

调用此方法以启动与Apple的注册过程   推送通知服务。如果注册成功,则应用调用   您的应用程序委托对象的   应用程序: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()