在应用程序的生命周期中的另一个时间要求远程通知授权?

时间:2017-09-26 13:18:44

标签: ios swift notifications usernotifications

我遇到了一个奇怪的问题。当我使用下面的代码在didFinishLaunchingWithOptions中请求远程通知授权时,我能够从我的服务器(Firebase Messaging)获得推送远程通知,但是当我尝试稍后请求授权时 NOT INSIDE didFinishLaunchingWithOptions 我无法收到任何通知。

我不想在发布时要求授权。我想在用户登录后请求授权。

Apple文档说:

  

在安排任何本地通知之前始终调用此方法   在注册Apple推送通知服务之前。   通常,在配置时,在启动时调用此方法   应用程序的通知支持。但是,您可以在其他时间拨打电话   在你的应用程序的生命周期中,假设你在执行之前调用它   任何其他与通知相关的任务。

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

 let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]

 UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions,
            completionHandler: {_, _ in })

 UIApplication.shared.registerForRemoteNotifications()

对此问题的任何建议/解决方案?

应用信息: 部署目标:iOS 10.3 iOS设备:带iOS 10 / iPhone 7和iOS 11的iPhone 6

1 个答案:

答案 0 :(得分:1)

所以我在这里解决了这个问题:

在我的didFinishLaunchingWithOptions我注册了远程通知,如下:

UNUserNotificationCenter.current().delegate = self
UIApplication.shared.registerForRemoteNotifications()

然后在以后,例如在用户登录后,我通过调用以下方法请求授权;

 func reqeust()  {
        // For iOS 10 display notification (sent via APNS)
        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]

        UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions,
            completionHandler: {_, _ in



        })

    }