【发布时间】:2018-05-25 23:58:33
【问题描述】:
我想向我的 iOS 应用程序发送静默通知,为此我在其中实施了 FCM。当应用程序在后台时,当应用程序从 FCM 收到通知时,我需要执行一些操作。
为此,执行过程将进入被调用的方法
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
但问题是,在用户点击通知之前,它不会进入此方法。
根据 (FCM documents) ,如果我们想在后台唤醒我们的应用程序,那么我们必须传递 key 值为 true 的 content_available 参数。但是,当我通过您在custom data 中的 FCM Compose 消息控制台发送此信息时,我们的应用程序不会唤醒,也不会在后台激活,直到用户点击通知。我猜我收到的所有通知都是正常通知,而不是无声通知。所以 FCM 实现和发送通知似乎工作正常。
我遵循了所有给出的 FCM 文档,并参考了几乎所有可能的连接 stackoverflow 解决方案。即使我已经按照苹果文档发送远程通知。最后我通过 FCM 消息控制台发送“content_available”:true。但它并没有变成无声通知,我收到的通知是普通通知,用户必须点击该通知才能进入 didReceiveRemoteNotification 方法。
我参考了很多这样的链接 here, here, & here
是否甚至可以通过 FCM 在后台接收通知(如无声通知)? 或任何其他方式来实现它?
【问题讨论】:
-
content_available是一个参数,它应该在您的有效负载中的notification和data之外。将任何键值对放入自定义数据中,将其放入data消息负载中。 -
好的,让我试试看。
-
我已经联系了 firebase-support,他们说“在通知控制台中发送静默通知是不可能的。它的主要用途是发送将显示给用户的活动。如果您希望发送静默通知通知,您需要改用 FCM API。" .那么如何使用该 FCM API 呢?你知道怎么做吗?
-
您可以尝试使用 Postman -- 请参阅我的回答 here
-
我按照你说的做了,但我得到了这种格式 userInfo->{ alert = { body = "noti body"; title = "通知标题"; }; } ...我仍然没有收到通知,因为应用程序处于后台状态。
标签: ios objective-c firebase firebase-cloud-messaging firebase-console