0

當應用程序在後臺使用靜默推送通知時,我可以播放AVAudioPlayer嗎?使用didReceiveRemoteNotification在後臺啓動AVAudioSession和AVAudioPlayer:fetchCompletionHandler:

我當前的實現是這樣的:

  1. 發送無聲推送通知
  2. didReceiveRemoteNotification:fetchCompletionHandler:被觸發 並創建隨後會話從那裏播放MP3。

的問題是,會議似乎被帶走時,你的應用是不是相當的時間(如一夜)和AVAudioSession如果你從後臺模式要求它沒有給予積極的,所以AVAudioPlayer韓元」不要播放mp3。

我正在開發緊急事件報警應用程序,因此即使手機靜音並鎖定,應用程序也需要播放聲音。

任何人都遇到過類似的實現?

回答

0

你的情況的解決方案是使用UIBackgroundModes鍵中的「音頻」設置,它有效地告訴系統應用程序的主要目的是在後臺播放音樂:「該應用程序向用戶播放可聽內容或在後臺錄製音頻「。看到這個細節:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

但是,似乎蘋果將拒絕使用這種方法的「報警應用程序」,因爲警報不會持續播放,並不符合「音頻應用程序」的條件。看到這個答案:Why did my app get rejected because "Multitasking apps may only use background"?

大部分時間你都可以嘗試「沉默」,但他們也會拒絕。

總而言之,您可以通過使用靜默推送通知和UIBackgroundModes鍵,在技術上實現此報警應用程序,但此方法違反Apple審查政策。

+0

這就是說,讓我知道你是否找到了解決辦法。我所看到的大多數鬧鐘應用都使用本地通知,但它們毫無用處,因爲即使靜音開關或「請勿打擾」模式打開,鬧鐘也需要響鈴。 – Ivan

+1

嗨ivan,從技術上講,這確實是可能的,問題是如果我停止發送靜默推送一段時間(如1夜),那一刻我再次發送無聲推動,應用程序不會播放MP3文件。爲了讓應用程序再次播放MP3,我必須將應用程序放到前臺,發送無聲推送,讓應用程序在前臺播放MP3,然後當無聲推送到達後臺模式時,應用程序將能夠再次播放MP3 。關於審查政策,我會試一試,因爲我的應用程序不公開。 –