我遇到了一个奇怪的问题。当我使用下面的代码在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
答案 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
})
}