应用程序运行时在 iOS 中抑制/隐藏推送通知

Posted

技术标签:

【中文标题】应用程序运行时在 iOS 中抑制/隐藏推送通知【英文标题】:Suppress/Hide push notifications in iOS when the app is running 【发布时间】:2015-12-17 20:47:28 【问题描述】:

我从我们拥有的通知服务器收到有关某些事件的推送通知。

    确实希望当应用在后台/前台处于活动状态时显示这些通知警报

    希望当应用程序在后台活动时出现通知警报(前台不是问题,因为通知不显示反正)。我只想显示我自己的本地通知。

有没有办法从代码中做到这一点?基本上我想隐藏远程推送通知,而是在我的应用程序处于活动状态时显示本地通知。

P.S - 发送静默通知的通知服务器不是一个选项 - 服务器不知道我们的应用程序何时运行/未运行。应用程序和此服务器之间没有通信。

【问题讨论】:

不,如果我能很好地理解您的目标,则没有任何方法可以在代码中执行此操作。推送警报将在“didReceiveRemoteNotification”等委托方法之前由系统传递。 “在后台活动”是什么意思?在一般情况下(有一些有限的例外情况),一旦您进入后台,超过 ios 提供的宽限期,您的应用就会被暂停。 是的,我指的是应用程序可以在后台运行的宽限期。 【参考方案1】:

您可以先通知您的应用程序,然后再显示本地通知。要执行此操作,您只需从服务器发送content-available 通知。这会让您的应用收到通知,然后您可以决定是否显示本地通知。

【讨论】:

但是如果应用程序没有运行,我确实希望系统显示通知。特别是因为 didReceiveRemoteNotification withFetchHandler 并不总是会被调用,所以它不会在所有情况下唤醒我的应用程序。

以上是关于应用程序运行时在 iOS 中抑制/隐藏推送通知的主要内容,如果未能解决你的问题,请参考以下文章

MFP 应用程序在应用程序未运行时在推送通知期间点击时崩溃

收到推送通知时在后台执行代码

管理推送通知

Flutter - 推送通知到达时在应用程序图标上显示徽章编号

如果应用程序被杀死/运行,ios显示/隐藏通知

APNS 推送通知服务器返回抑制作为通知状态