Как воспроизвести музыку, не требуя действий пользователя, когда в iOS запускается уведомление, когда устройство заблокировано? - PullRequest
0 голосов
/ 23 ноября 2018

Как воспроизводить музыку, не требуя действий пользователя, когда в 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()

    }

}

Методы обратного вызова делегата не запускаютсякогда устройство заблокировано.

...