非常奇怪的问题我已经被困了一段时间。
我正在开发一个代码库,它有一个处理远程通知的通知中心,但AppDelegate也处理远程通知。
//通知中心处理程序
@available(iOS 10.0, *)
func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void) {
log.debug("@AppDelegate: willPresentNotification: \(notification)")
}
// App Delegate Notification Handler
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
log.debug("@AppDelegate: didReceiveRemoteNotification: \(notification)"
}
我遇到的奇怪行为是推送通知似乎适用于生产(当我们为应用商店构建时)。但是,当我在Dev中发送推送通知时,userNotificationCenter willPresentNotification
处理程序会触发,但application didReceiveRemoteNotification
不会触发。
我无法测试它为什么在生产中工作(因为你无法连接调试器),所以我不太明白为什么会出现这种情况。
你知道为什么userNotificationCenter willPresentNotification
可能(或可能不)拦截生产对开发中的application didReceiveRemoteNotification
(或者它可能拦截通知处理程序的任何其他原因)?当我删除userNotificationCenter
代码时,标准didReceiveRemoteNotification
会在开发中触发。
任何见解都非常感谢谢谢。