Apple Siri Intent останавливает воспроизведение без видимой причины

Я хотел бы улучшить интеграцию моего приложения FM-Pod с ярлыками намерений Siri. Я сделал это приложение, чтобы слушать радио на HomePod, и на данный момент я смог запустить воспроизведение, изменить станции и т. д., но я столкнулся со странной проблемой, из-за которой воспроизведение звука останавливается. в одиночку примерно через 1 минуту...

Кто-нибудь знает причину? Что случилось?

Вот код в Swift для запуска воспроизведения с использованием AVAudioPlayer:

open func handle(intent: StartFMPodIntent, completion: @escaping (StartFMPodIntentResponse) -> Void) {

    DataManager.getStationDataWithSuccess(filename: "favorites") { (data) in
        if debug { print("Stations JSON Found") }
        guard let data = data, let jsonDictionary = try? JSONDecoder().decode([String: [RadioStation]].self, from: data), let stationsArray = jsonDictionary["station"]
            else {
                if debug { print("JSON Station Loading Error") }
                return
        }
            HPRIntentHandler.stations = stationsArray
            if !FRadioPlayer.shared.isPlaying {
                FRadioPlayer.shared.radioURL = URL(string: HPRIntentHandler.stations![0].streamURL0!)
                let response = StartFMPodIntentResponse(code: .success, userActivity: nil)
                response.stationName = stationsArray[0].name
                completion(response)
            }


    }
}

person Calogero Cascio    schedule 02.11.2018    source источник


Ответы (1)


Согласно https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple_ref/doc/uid/TP40014214-CH2-SW2

Расширение уничтожается после завершения выполнения кода. Поскольку getStationDataWithSuccess выполняется в асинхронном режиме, его код достигает конца до того, как асинхронная функция завершает работу. Вы должны найти другое место, чтобы справиться с этим.

person Hikaru Watanabe    schedule 02.11.2018
comment
Я понял вашу мысль, спасибо. Я могу попробовать прочитать файл синхронно. Хотя я должен уточнить, что «завершение (ответ)» достигнуто, потому что Siri подтверждает с помощью stationName, как и ожидалось. - person Calogero Cascio; 03.11.2018