为本地通知select自定义声音

你如何改变播放本地通知的声音? 我使用下面的代码来播放默认声音:

notif.soundName = UILocalNotificationDefaultSoundName; 

所以,我在下面尝试了这个,但是没有成功。 我该怎么办? 谢谢你的帮助!

 notif.soundName = @"sound.caf"; 

这应该工作。 确保声音实际上在您的应用程序包中,格式正确(线性PCM或IMA4 – 几乎任何地方,说明如何转换iOS的声音将告诉你如何做到这一点),是在30秒以下。

您可以使用以下命令从wav和mp3进行转换:

 afconvert -f caff -d LEI16@44100 -c 1 in.wav out.caf 

我也尝试使用下面的命令将mp3转换为caf:

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

这里有一个教训 :我花了几个小时的时间与当地通知的声音斗争。 试图用不同的比特率和格式进行转换。 但最后我发现iOS 6.1仿真器一定有缺陷。 我将代码部署到设备上,效果很好,但在仿真器上没有任何声音。

我遇到了所有这些问题(感谢您的答案),并能够通过从.wav转换为.caf(sans 6.1模拟器)来解决问题。 我需要的最后一点是确保.caf是在我的应用程序的捆绑。 要确认/纠正这个…

右键单击“Project Navigator”中的文件,select“Show File Inspector”,并确保文件在“Target Membership”区域中有一个复选标记。 在我的情况下,“LocalNotificationExampleTests”是唯一检查的项目。 检查“LocalNotificationExample”修复了设备上缺less声音的问题。

对于Swift 3 ,在通知调度function中使用UNNotificationSound.init作为notif对象。

这是一个Swift 3的例子:

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

最后一点,根据苹果公司的说法:“声音文件必须包含在应用程序的包或应用程序数据容器的Library / Sounds文件夹中,如果两个位置都存在文件,那么〜/ Library / Sounds中的文件将是首选。 “