应用程序在后台时不显示推送通知
Posted
技术标签:
【中文标题】应用程序在后台时不显示推送通知【英文标题】:Push notification not displaying when app is in background 【发布时间】:2016-12-09 15:09:13 【问题描述】:我正在尝试在我的 ios 应用中实现 Firebase 推送通知,但无法弄清楚当应用处于后台时如何接收通知。
我使用 print 来显示通知,但它只在应用程序打开时打印通知。如果我在应用程序处于后台时发送通知,则不会发生任何事情,但会在我重新打开应用程序后立即打印消息。
下面是我的 AppDelegate 代码
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
registerForPushNotifications(application)
FIRApp.configure()
// Add observer for InstanceID token refresh callback.
NSNotificationCenter
.defaultCenter()
.addObserver(self, selector: #selector(AppDelegate.tokenRefreshNotificaiton),
name: kFIRInstanceIDTokenRefreshNotification, object: nil)
// Override point for customization after application launch.
return true
func registerForPushNotifications(application: UIApplication)
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)
sendNotification();
print("===== didReceiveRemoteNotification ===== %@", userInfo)
func tokenRefreshNotificaiton(notification: NSNotification)
let refreshedToken = FIRInstanceID.instanceID().token()!
print("InstanceID token: \(refreshedToken)")
connectToFcm()
func connectToFcm()
FIRMessaging.messaging().connectWithCompletion (error) in
if (error != nil)
print("Unable to connect with FCM. \(error)")
else
print("Connected to FCM.")
func sendNotification()
let notification = UILocalNotification()
let dict:NSDictionary = ["ID" : "your ID goes here"]
notification.userInfo = dict as! [String : String]
notification.alertBody = "title"
notification.alertAction = "Open"
notification.fireDate = NSDate()
UIApplication.sharedApplication().scheduleLocalNotification(notification)
我也添加到了我的 info.plist
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
</array>
这是我发送消息的格式
"to" : "",
"notification" :
"body" : "",
"title" : "",
,
"content_available": true,
"priority": "high"
【问题讨论】:
我不知道这是否是一个 firebase 有效载荷(它被 firebase 转换为一个苹果有效载荷)。但是 app payload 中的 apple 关键字是 content-available,而不是 content_available。 【参考方案1】:当您的应用关闭时,您无法收到推送通知数据。您应该将消息存储到服务器,而不是用户从那里访问消息
【讨论】:
应用在后台时可以显示通知吗? 是的,您可以在应用处于后台时显示推送通知 你能解释一下我必须对应用程序和上面的代码做什么,因为它似乎不起作用。谢谢【参考方案2】:验证项目设置和“功能”是否正确配置
【讨论】:
是的,它配置正确但仍然无法正常工作。谢谢。 开启后台抓取功能以上是关于应用程序在后台时不显示推送通知的主要内容,如果未能解决你的问题,请参考以下文章
Flutter IOS 通知的 FCM 在应用程序处于后台或终止时不显示
应用程序完全关闭时不出现 Android 推送通知(使用 node-gcm)