为本地通知选择自定义声音

时间:2011-08-24 04:34:33

标签: iphone objective-c ios ipad notifications

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

notif.soundName = UILocalNotificationDefaultSoundName;

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

notif.soundName = @"sound.caf";

6 个答案:

答案 0 :(得分:37)

您可以使用以下方式从wav和mp3转换:

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

答案 1 :(得分:29)

那应该有用。确保声音实际上在您的应用程序包中,格式正确(线性PCM或IMA4 - 几乎任何解释如何转换iOS声音的地方都会告诉您如何操作),并且不到30秒。

答案 2 :(得分:16)

我还尝试使用以下命令将mp3转换为caf:

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

这里有一个教训:我花了几个小时来挣扎当地通知的声音。试图转换为不同的比特率和格式。但最后我发现iOS 6.1仿真器一定存在缺陷。我将代码部署到设备,它运行良好,但在模拟器上,没有任何声音。

答案 3 :(得分:8)

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

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

答案 4 :(得分:2)

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

这是 Swift 3 示例:

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

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

答案 5 :(得分:0)

Swift 5.1

如何更改为本地通知播放的声音。我使用下面的代码播放默认声音:

content.sound = UNNotificationSound.init(named: UNNotificationSoundName(rawValue: "Sound_Name.mp3"))