Как воспроизводить музыку, не требуя действий пользователя, когда в iOS запускается уведомление, когда устройство заблокировано?Музыка должна быть значительно длиннее звука - длиннее 30-секундного ограничения, установленного для тона уведомления.Другие сообщения в стеке переполнение указывают, что это не может быть сделано, но я видел приложение, которое может это сделать.Возможно, это может быть сделано окольным путем, хотя я хотел бы изучить предпочтительный способ.
Вот мой код до сих пор:
let content = UNMutableNotificationContent()
content.categoryIdentifier = "HELLO"
content.title = "Hello World!"
content.body = "May the Force be with you."
var dateComponents = DateComponents()
dateComponents.second = 0
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
// Create the request
let uuidString = UUID().uuidString
let request = UNNotificationRequest(identifier: uuidString,
content: content, trigger: trigger)
// Schedule the request with the system.
center.add(request) { (error) in
if error != nil {
print("error=", error?.localizedDescription as Any)
}
}
// MARK: - UNUserNotificationCenterDelegate
extension ViewController: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
print("willPresent")
completionHandler([.alert, .badge, .sound])
}
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
print("didReceive")
print(response.actionIdentifier)
completionHandler()
}
}
Методы обратного вызова делегата не запускаютсякогда устройство заблокировано.