如何保持UNUserNotificationCenter声音播放直到用户停止播放

时间:2018-09-22 18:00:00

标签: ios unusernotificationcenter swift4.2

有几篇文章解决了这个问题,但是(据我所见)它们都是4年前和Objective-C中的文章。我正在使用Swift 4.2。

我正在制作一个倒数计时器应用程序。当应用程序在后台运行且计时器到期时,我希望通知声音继续播放,直到用户通过点击通知将其停止。

到目前为止,我仅从后台/锁定屏幕播放一次警报声音。

这是我正在使用的方法。

func notifications(title: String, message: String){

    center.delegate = self

    let restartAction = UNNotificationAction(identifier: "RESTART_ACTION", title: "Restart timer", options: UNNotificationActionOptions(rawValue: 0))

    let stopAction = UNNotificationAction(identifier: "STOP_ACTION", title: "Stop", options: UNNotificationActionOptions(rawValue: 0))

    let expiredCategory = UNNotificationCategory(identifier: "TIMER_EXPIRED", actions: [restartAction, stopAction], intentIdentifiers: [], options: UNNotificationCategoryOptions(rawValue: 0))

    // Register the notification categories.
    center.setNotificationCategories([expiredCategory])

    let content = UNMutableNotificationContent()
    content.title = title
    content.body = message
    content.categoryIdentifier = "TIMER_EXPIRED"
    content.sound = UNNotificationSound(named:UNNotificationSoundName(rawValue: _currentTimer.getSoundEffect+".mp3"))

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: TimeInterval(_currentTimer.endTime), repeats: false)
    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)

    center.add(request) { (error : Error?) in
        if let theError = error {
            print(theError.localizedDescription)
        }
    }
}

1 个答案:

答案 0 :(得分:0)

因此,我要解决的这个问题的答案是没有答案。苹果公司不希望第三方开发人员在任何情况下播放通知声音的时间都不会超过30秒,即使要构建计时器应用程序也是如此。他们的“时钟”应用中的计时器会关闭,直到您将其静音为止,但不允许第三方开发人员执行此操作。