当应用程序在后台运行时,用户手动启用推送通知时获取deviceToken

时间:2017-11-22 16:45:10

标签: ios swift swift3

当用户在应用程序处于后台时从设置中手动启用推送通知令牌时,是否有办法获取推送通知令牌。 Swift中是否有一个函数可以在用户返回应用程序时获得推送通知令牌。

2 个答案:

答案 0 :(得分:0)

您可以使用observer进行系统明智的设置更改。查看有关this thread

的更多信息

答案 1 :(得分:0)

当用户浏览ios常规设置中允许的推送通知时, 该应用可以调用

UIApplication.shared.registerForRemoteNotifications()

和设备令牌可以从

获得
public func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)

据我了解,没有任何直接方法可以手动确定用户设置推送通知,因此我提出了两种替代方法

  1. 使用NSNotification中心观察器确定任何设置更改,如已here
  2. 所述
  3. 或在Appdelegate应用程序WillEnterForeground

调用波纹管功能(例如)

    func registerRemoteNotification() {
     let notificationCenter = UNUserNotificationCenter.current()
     notificationCenter.getNotificationSettings { (settings) in
        if settings.authorizationStatus == .authorized {
            //"authorized"
            DispatchQueue.main.async {
              UIApplication.shared.registerForRemoteNotifications()
             }
        } else {
          //"not authorized")
        }
      } 
    }