2011-08-24 61 views
30

如何更改播放本地通知的聲音?我使用下面的代碼播放默認聲音:爲本地通知選擇自定義聲音

notif.soundName = UILocalNotificationDefaultSoundName; 

因此,我在下面嘗試了這一點,但它沒有奏效。我該怎麼辦?謝謝你的幫助!

notif.soundName = @"sound.caf"; 
+0

看起來它應該工作。你的應用程序包中有'sound.caf'嗎? – jtbandes

+0

是的,格式化是否正確?我不需要諸如名稱:sound withEnding:caf,或類似的東西? –

+0

是的,文檔說只包含擴展名。 – jtbandes

回答

29

這應該有效。確保聲音實際上在你的應用程序包中,格式正確(線性PCM或IMA4-幾乎任何地方,說明如何轉換iOS的聲音會告訴你如何做到這一點),並且不到30秒。

+0

將它拖放到Xcode中,CAF將在30秒內運行? –

+2

CAF是一種容器格式;你不能從擴展中知道給定的CAF包含正確的數據類型。在Quicktime Player中打開聲音,按Cmd-I打開Movie Inspector,然後檢查格式。我說的格式是「線性PCM,16位小尾數有符號整數」等。如果您的聲音文件顯示了其他內容,那可能是問題所在。 –

+0

我改爲使用IMA4格式並使其工作。謝謝你的幫助! –

37

可以使用從WAV和MP3轉換:

afconvert -f caff -d [email protected] -c 1 in.wav out.caf 
+0

其中我將輸入該命令並且還可以在ios代碼中進行轉換 – srinadh

+0

afconvert是一個命令行程序,可以從shell應用程序中使用您的macosx –

15

我也試圖轉換MP3使用以下命令CAF:

afconvert clockalarm.mp3 clockalarm.caf -d ima4 -f caff -v 

一個教訓在這裏:我花了幾個小時到與當地通知的聲音鬥爭。試圖用不同的比特率和格式進行轉換。但最後我發現iOS 6.1仿真器一定有缺陷。我將代碼部署到設備上,它運行良好,但在仿真器上,沒有任何聲音。

+0

非常感謝您的評論。我更新了內容,包括我的最新信息,我在這裏學到的經驗教訓。 –

+0

很高興你發現了一個解決方案:-) – kleopatra

+2

mp3文件正在工作,無需將其轉換成caf文件格式 –

8

我遇到了所有這些問題(感謝您的答案),並能夠通過從.wav轉換爲.caf(sans 6.1模擬器)來解決問題。我需要的最後一點是確保.caf位於我的應用程序包中。確認/更正此...

右鍵單擊「項目導航器」中的文件,選擇「顯示文件檢查器」,並確保文件在「目標成員」區域中的項目旁邊有複選標記。在我的情況下,「LocalNotificationExampleTests」是唯一檢查的項目。檢查「LocalNotificationExample」可以修復設備上缺乏聲音的情況。

1

對於Swift 3使用UNNotificationSound.init作爲通知調度函數中的notif對象。

這裏有一個斯威夫特3例如:

func scheduleNotifications(inSeconds: TimeInterval, completion: @escaping (_ Success: Bool) ->()){ 
     ... 
     notif.sound = UNNotificationSound.init(named: "CustomSound.mp3") 
     ... 
} 

最後一點,據蘋果稱:「這聲音文件必須包含在應用程序的包或庫中/語音應用程序的數據容器的文件夾中。如果文件存在於兩個位置,那麼〜/ Library/Sounds中的文件將是首選。「