iOS 推送通知 - didReceiveRemoteNotification:fetchCompletionHandler: 从未在前台调用
Posted
技术标签:
【中文标题】iOS 推送通知 - didReceiveRemoteNotification:fetchCompletionHandler: 从未在前台调用【英文标题】:iOS push notifications - didReceiveRemoteNotification:fetchCompletionHandler: never called in foreground 【发布时间】:2017-08-08 11:31:08 【问题描述】:我已经在我的应用中实现了远程通知,但是我遇到了didReceiveRemoteNotification:fetchCompletionHandler:
的问题。
当手机屏幕被锁定时,我会收到通知。如果用户滑动通知,应用返回前台并调用didReceiveRemoteNotification:fetchCompletionHandler:
。
但如果应用程序在前台运行,则永远不会调用 didReceiveRemoteNotification:fetchCompletionHandler:
。可能是什么原因?
我正在使用 ios 10.3.2
【问题讨论】:
尝试在其中放置警报并在前台模式下检查。 见此一次 ref ***.com/questions/39382852/… @mag_zbc 假设您在 iOS9 上工作以使用此方法,而不是在 ios10 和 UNUserNotificationCenter 上 【参考方案1】:您正在使用哪个 iOS 版本?
iOS 9 和 iOS 10 有不同的方法。
以下是适用于 iOS 10 的版本
//Called when a notification is delivered to a foreground app.
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
//Called to let your app know which action was selected by the user for a given notification.
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void)
对于 iOS 9,请务必在 didBecomeActive
中注册您的通知UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil))
UIApplication.shared.registerForRemoteNotifications()
在你的 didReceiveRemoteNotification
func application(_ application: UIApplication, didReceiveRemoteNotification data: [AnyHashable : Any])
if application.applicationState == .active
//foreground state
最好的方法是在 didReceiveRemoteNotification 中放置一个调试器并进一步检查。
【讨论】:
确保导入 UserNotifications 检查这个答案***.com/q/38940193/2570153 虽然我使用的是 Objective-C,而不是 Swift,但这是正确的答案。我忘了实现UNUserNotificationCenterDelegate
方法,这些方法在前台调用,而不是 iOS 10 中的 didReceiveRemoteNotification:fetchCompletionHandler:
@mag_zbc 太棒了!以上是关于iOS 推送通知 - didReceiveRemoteNotification:fetchCompletionHandler: 从未在前台调用的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发 - ANPs推送通知 标签: 推送通知ANPs远程推送本地推送