【问题标题】:iOS 15 - Notification sounds are not playing for foreground notificationsiOS 15 - 没有为前台通知播放通知声音
【发布时间】:2021-10-31 13:14:23
【问题描述】:

在不显示横幅或列表的情况下,在 iOS 15 中播放与通知相关的提示音的正确方法是什么?

在前台处理本地和推送通知时,如果UNNotificationPresentationOptions 只是sound,则不会播放通知声音。如果bannerlist 等附加选项与sound 一起添加,则会播放通知音。

当应用处于后台时,通知呈现的所有选项都可以正常工作。

我知道 alert 选项已从 iOS 15 中弃用。是否使用 sound 作为唯一的演示选项,不再有效?

下面是sn-p

func userNotificationCenter(_ center: UNUserNotificationCenter, 
willPresent notification: UNNotification, withCompletionHandler 
completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
     
     completionHandler(.sound) //not working
     //completionHandler([.banner, .sound]) //works
     //completionHandler([.list, .sound]) //works
     
 }

【问题讨论】:

标签: ios usernotifications ios15 unusernotification


【解决方案1】:

我找到了解决方案。 您需要像这样设置完成处理程序:

func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

    switch UIApplication.shared.applicationState {

    case .active:
        if #available(iOS 14.0, *) {
            completionHandler([.sound, .list])
        } else {
            // Fallback on earlier versions
            completionHandler([.sound])
        }
    default:
        if #available(iOS 14.0, *) {
            completionHandler([.banner, .sound])
        } else {
            // Fallback on earlier versions
            completionHandler([.alert, .sound])
        }
    }
}

现在应用内通知带有声音和我的自定义横幅。

.list 也会在通知中心添加通知,我觉得这非常有用,以防用户在使用应用程序时错过了一些通知。

【讨论】:

  • 该问题明确询问如何在不使用列表或横幅选项的情况下使[.sound] 在 iOS 15 中工作。
  • @return0 好吧,它似乎不适用于仅使用[.sound] 的 iOS 15。您需要选择.banner.list。当应用程序处于foreground 状态时,第二个选项不会显示传入通知的任何视觉表示。如果需要,您可以显示自定义应用内弹出窗口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
相关资源
最近更新 更多