2011-12-22 80 views
2

當應用程序在後臺生成UILocalNotification時,如何設置設備音量(以靜音模式)?我正在開發鬧鐘應用程序,因此聲音必須以靜音模式播放,我正在使用本地通知處理應用程序鬧鐘。設置設備音量 - UILocalNotification - iphone處於靜音模式

在這個問題上陷入困境,無法在無聲模式下播放鬧鐘。

請幫助..

+0

無聲開關是有原因的... – Ahti 2011-12-22 11:47:54

+1

但是鬧鐘也應該在無聲模式下播放.. – 2011-12-22 12:00:35

+0

我不同意這一點。該設備應該振動,但不應播放聲音。我的意思是什麼是靜音模式好,如果它實際上並不保證你的設備會保持沉默(除了找到我的iPhone警報之類的東西)?我發現它可以討論,讓用戶直接啓動它時發出聲音(啓動vdeo回放或者那樣),但那是全部。 (不知道蘋果是否這樣做,但如果他們這樣做,他們應該改變它) – Ahti 2011-12-22 12:23:50

回答

0

你必須認識到,本地通知被觸發,即使您的應用程序被殺害。這導致我得出結論,可能無法做到這一點。 但你可以嘗試這樣的:

 
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; 
      AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 

你讓你的音頻會話使用權之前。

+1

感謝Vanya回覆。但是我們沒有使用AVAudioPlayer播放通知,本地通知是從操作系統發出的。如果你認爲這會起作用,你可以通過提供一些示例代碼來提供幫助。 – 2011-12-23 06:51:57

3

這根本不可能。 UILocalNotification彈出窗口和聲音由另一個系統進程生成,並且該進程會觀察設備的靜音模式,因此如果設備處於靜音狀態,則不會播放通知聲音。

如果您希望鬧鐘應用程序在設備處於靜音模式時播放鬧鐘聲音,則必須直接從您的應用程序播放鬧鐘聲音。要做到這一點,你需要保持你的應用程序在後臺運行,那麼你將不得不在後臺播放鬧鐘聲音文件。後者可以通過指定「音頻」,在您的info.plist的「所需的背景模式」屬性(你將不得不將該屬性添加到您的plist文件)

現在,使用AVAudioPlayer來完成,還有一個辦法播放聲音,即使設備是沉默的設置音頻會話類別是這樣的:

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil]; 

希望這有助於。