2010-09-15 19 views
4

我已經成功地安排使用下面的代碼在我的應用程序的本地通知聲音:設置爲在3G版iPhone本地通知運行iOS4的

Class cls = NSClassFromString(@"UILocalNotification"); 

    if (cls != nil) { 

     UILocalNotification *notification = [[cls alloc] init]; 
     notification.fireDate = self.alarmNotificationDate; 
     notification.timeZone = [NSTimeZone defaultTimeZone]; 

     notification.alertBody = @"Alarm is due"; 
     notification.alertAction = @"Show Alarm"; 

     notification.soundName = @"alarm.mp3"; 

     [[UIApplication sharedApplication] scheduleLocalNotification:notification]; 
     [notification release]; 

凡self.alarmNotificationDate是在NSDate的另一種方法分配。

所有在模擬器中工作正常,但是當我測試運行iOS4的可信任舊iPhone 3G時,我收到通知,但僅使用默認聲音。

我嘗試過不同的聲音文件,但沒有成功。

任何線索爲什麼它可能是這樣以及如何糾正它?

感謝

回答

6

UILocalNotification不支持mp3。它僅支持參考頁面上提及的格式和容器。

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html

由於定製警報聲音由iOS系統的聲音設施發揮 ,他們 必須在以下音頻 數據格式之一:

Linear PCM 
    MA4 (IMA/ADPCM) 
    µLaw 
    aLaw 

您可以打包音頻數據在aiff,wav或caf文件中的 。

+0

謝謝。現在使用AIF文件。 – Structurer 2010-09-30 02:46:48

3

可能有幾個原因:

  1. 包含在你捆綁你的聲音文件? (最有可能的,因爲它可以在模擬器上工作)
  2. Apple文檔說不使用壓縮音頻格式。請參閱鏈接here。這是因爲iPhone硬件一次只能播放一個壓縮音頻文件,因此,如果用戶已經在收聽iTunes中的歌曲,建議不要將其用於鬧鐘。
+0

我目前正在使用MP3,所以可能是這種情況。將嘗試與另一種格式,看看它是如何工作的。謝謝。 – Structurer 2010-09-17 08:44:08

+0

對不起,對於遲到的反饋,但我陷入另一個項目。經過AIF文件測試,效果很好。謝謝。 – Structurer 2010-09-30 02:45:45

0

您是否在文件名和文件名中使用相同的大寫/小寫編碼來拼寫聲音的名稱?

+0

我以前有過這個問題,所以每當這樣的事情不起作用時,我總是將實際的文件名複製到代碼中。但是,謝謝你的建議。 – Structurer 2010-09-17 08:45:12