Swift - GCM:不显示 iOS 远程推送通知

Posted

技术标签:

【中文标题】Swift - GCM:不显示 iOS 远程推送通知【英文标题】:Swift - GCM: Don't display iOS remote push notification 【发布时间】:2016-02-19 15:40:07 【问题描述】:

我已经在我的 ios 应用中实现了 GCM 推送通知。我只需要与新内容同步的通知。效果很好。但我不希望向用户显示通知。我该如何隐藏它?

【问题讨论】:

【参考方案1】:

您需要将content_available参数发送到true

https://developers.google.com/cloud-messaging/http-server-ref

您还需要在您的应用程序Info.plist 文件中为UIBackgroundMode 添加remote-notifications。 https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW22

【讨论】:

好吧,我只需要在来时不显示通知。这真的是解决方案吗? @PanMluvčí,是的。您想要的是静默远程通知,为此您需要执行此答案中所述的两件事。 好吧,我已将 remote-notification 添加到我的 info.plist 文件中,然后告诉我的后端伙伴设置 content_available .......仍然可以看到通知:- (【参考方案2】:

只是为了不显示通知,通知需要静音。为此,您不能在消息中包含任何标题、正文或副标题。

默认情况下,iOS 会忽略没有标题、正文或副标题的消息,因此需要额外的参数content_available: true

因此,如果您发送此消息时没有任何标题、正文和副标题,但带有content_available: true,仍然不会发生任何事情。

为了响应这个问题,应用需要在收到scilent通知后在后台运行一个小任务的权限。

要获得此权限,您需要编辑 .plist 文件并添加字段 Required background modes,其值为 remote-notifications。或者您可以选择项目并转到Capabilities tab -> Background Modes -> Remote notifications。这将为您添加 .plist 条目。

现在您可以在收到通知时在后台执行一项小任务。比如解析通知负载中的一些自定义数据或进行一些轻量级的网络调用等。

您希望在 AppDelegate 中查找:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

这里可以解析userInfo数据。

【讨论】:

以上是关于Swift - GCM:不显示 iOS 远程推送通知的主要内容,如果未能解决你的问题,请参考以下文章

带有 GCM 的 iOS 推送通知

ios Google Cloud Messaging (GCM) 未收到远程通知

当应用程序处于非活动状态时,GCM 推送通知不适用于 iOS

是否可以仅显示 Firebase 推送通知的徽章,而在 IOS(Swift 或 Obj-C)中没有警报?

当我的应用在 fg 上时,我的应用如何发送推送通知?

iOS 推送通知和 GCM