2015-06-16 147 views
0

我有一些UILocalNotification聲音的問題。我在應用程序委託中擁有用戶權限。UILocalNotification聲音不工作

這是我的代碼:

var nottypes:UIUserNotificationType = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound 
var notsettings:UIUserNotificationSettings = UIUserNotificationSettings(forTypes: nottypes, categories: nil) 
application.registerUserNotificationSettings(notsettings) 

代碼通知:

var notification:UILocalNotification = UILocalNotification() 
notification.alertBody = "Simple" 
notification.alertTitle = "Back To App!" 
notification.fireDate = NSDate(timeIntervalSinceNow: 20) 
notification.soundName = "Chord" 
UIApplication.sharedApplication().scheduleLocalNotification(notification) 

回答

3

你應該總是先看看文檔在S.O.發佈提問之前如果你讀soundName's屬性的定義的第一行,它說:

對於此屬性,指定文件名(包括擴展名)聲音源的在應用程序的主束或UILocalNotificationDefaultSoundName請求默認的系統聲音。當系統顯示本地通知的警報或標記應用程序圖標時,它會播放此聲音。默認值是零(沒有聲音)。不支持持續時間超過30秒的聲音。如果您指定播放超過30秒的聲音的文件,則會播放默認聲音。

所以嘗試:

notification.soundName = "Chord.mp3" // use .mp3 or your file extension if it is not an mp3 
+0

切記不要使用完整的文件路徑,包括包本身的路徑。即不要使用NSBundle.mainBundle()。pathForResource(fileName,ofType:「caf」) –

0

我碰到了同樣的問題,我不得不做以下步驟:

  1. 從MP3或WAV文件轉換爲咖啡館。 正如你可以使用命令轉換成終端WAV,AIF和MP3文件等回答說:

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

  2. 您也可以通過QuickTime 7導出爲.AIF具有以下 設置線性PCM率44.100線性PCM樣本大小爲16這些aif 文件似乎受支持。

  3. 確保您的文件少於30秒,即29秒或更少。

  4. 文件添加你到你的包的根,你可以拖放到Xcode中或右鍵單擊「添加文件(項目名稱)」 注意,您必須選擇下列選項: 一)如果需要的話目的地複製項目 b)添加到目標(您的構建姓名(或名稱)) 4)通過其名,包括擴展名,比如引用該文件 localNotification.soundName = "Chord.caf";

務必從測試或你們之間的設備/模擬器刪除的應用將不會看到您的更改結果。

如果仍有問題,請檢查聲音文件文件是否在項目的根目錄中。 在顯示文件檢查器中選中聲音文件「目標成員」。