2013-04-07 22 views

回答

3

使用不同容量不同的聲音文件。例如五個文件alarm1.aiff,alarm2.aiff ... alarm5.aiff。用戶在應用程序的偏好設置中選擇音量(1至5)級別,然後通知將使用相應的文件。

這種方式與使用選項選擇報警聲音相同。但只有不同的音量。

+0

系統不調整音量,以觀察聲音限制(保護),並保證甚至用戶體驗? – 2013-04-07 19:19:50

+0

不錯!這就是我所想的,但是,用戶能夠在UILocalNotification.soundName = @「xxx.wav」;'中選擇聲音文件嗎? – user1949873 2013-04-07 19:58:20

+0

@ user1949873我不明白你的問題。用戶不選擇聲音文件。他在您的應用程序中選擇一個級別,然後以編程方式設置soundName。 – Gabriel 2013-04-07 20:18:04

3

不幸的是沒有(公共)API可以控制通知音量。

兩個UILocalNotification彈出窗口和聲音由系統進程管理。該過程使用用戶的音量偏好,還會在播放聲音之前檢查設備是否處於靜音模式等。這在某種程度上是連貫的。

所以,你有兩個選擇:

  1. 告訴你的用戶必須在全球範圍內調整所有 通知音量,或使自己的手機處於靜默模式。
  2. 自己處理通知,並從您的應用程序中直接播放聲音 (爲了達到這個目的,您需要讓您的應用程序在 的背景下運行)。

這裏是後者溶液片段:

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:YOUR_SOUND_URL error:&error]; 
[audioPlayer setVolume:YOUR_DESIRED_VOLUME]; 
if (audioPlayer == nil) 
{ 
    NSLog([error description]);    
} 
else 
{ 
    [audioPlayer play]; 
} 

注意:通過適當的值替換YOUR_SOUND_URLYOUR_DESIRED_VOLUME

同樣值得一提的是本次討論:
Sounds in UILocalNotification louder than AVAudioPlayer at max volume

相關問題