当我的 iOS 应用程序处于前台时,如何使本地通知静音?

Posted

技术标签:

【中文标题】当我的 iOS 应用程序处于前台时,如何使本地通知静音?【英文标题】:How can I mute my local notifications while my iOS app is in foreground? 【发布时间】:2017-09-16 00:29:42 【问题描述】:

我正在使用这个包:https://github.com/zo0r/react-native-push-notification 在我的 react-native 应用程序中安排本地通知。

我可以安排在应用程序被终止或在后台显示的本地通知。如果应用程序位于前台,则会抑制视觉通知,但会播放通知铃声。我不希望播放声音 - 因为它只会混淆或惹恼用户。

根据 Apple 文档“当应用程序已经位于最前面时,系统不会显示任何警报、标记应用程序的图标或播放任何声音。”我一直在绞尽脑汁地阅读文档,但我不知道我可以做些什么来规避这个 ios 政策。

我应该在我的代码中查看的任何想法?

【问题讨论】:

iOS 不播放声音。声音必须在包中或应用代码中的某个位置播放。 我也是这么想的,但是当应用程序被终止并弹出通知(如预期的那样)时会播放声音,据我所知,我的应用程序或 RN- 中没有函数调用弹出通知时发生的 PN 包。我不知道为什么以及如何:-/ 我好像找到了解决办法。在我的 AppDelegate.m 文件中,我们正在设置 OneSignal 属性,并根据需要将 kOSSettingsKeyInFocusDisplayOption:@(OSNotificationDisplayTypeNone) 添加到 settings:@ 抑制通知。根据 OneSignal 文档,默认设置是:OSNotificationDisplayTypeInAppAlert - Display an alert with the notification,这似乎是对 iOS 通知策略的踩踏。 -- 所以这个问题似乎并不普遍适用,因为我认为没有多少人在他们的应用程序中混合多个通知包。 Cool 8),所以声音消失了 【参考方案1】:

这个库有一个可以为你处理它的属性。只需设置playSound: false

您可以将它与 AppState 混合使用,以根据状态值切换值。

以下文档中的更多信息:

https://github.com/zo0r/react-native-push-notification#local-notifications

https://facebook.github.io/react-native/docs/appstate.html

希望对你有帮助

【讨论】:

playSound 布尔值在安排通知时设置,一旦安排 iOS 从那里接管。我无法在 playSound 中添加任何逻辑,因为 iOS 无法访问我的 AppState。

以上是关于当我的 iOS 应用程序处于前台时,如何使本地通知静音?的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序处于前台时如何显示本地通知

为啥我的本地通知没有在 iOS 10 的前台触发?

当应用程序处于前台时收到推送通知时,是不是可以为 ios 显示横幅?

如何在应用程序处于后台(ios)时使 FCM 通知正常工作?

当应用程序处于后台模式时,电池电量通知不起作用

应用程序未运行时的 iOS 10 远程通知