UILocalNotification 声音不工作

UILocalNotification Sound Not Working

我对 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)

在 S.O 上发布问题之前,您应该始终先查看文档。如果您阅读 soundName's 属性 定义的第一行,它会说:

For this property, specify the filename (including extension) of a sound resource in the app’s main bundle or UILocalNotificationDefaultSoundName to request the default system sound. When the system displays an alert for a local notification or badges an app icon, it plays this sound. The default value is nil (no sound). Sounds that last longer than 30 seconds are not supported. If you specify a file with a sound that plays over 30 seconds, the default sound is played instead.

所以尝试:

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

我运行陷入同样的​​问题,我不得不做以下步骤:

  1. 将文件从 mp3 或 wav 转换为 caf。 如其他答案所述,您可以使用以下命令在终端中转换 wav、aif 和 mp3 文件:

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

  2. 您还可以使用 Quicktime 7 导出为 .aif,使用以下命令 设置 Linear PCM Rate 44.100 Linear PCM sample size 16 这些 aif 似乎支持文件。

  3. 确保您的文件少于 30 秒,即 29 秒或更短。

  4. 将文件添加到包的根目录,您可以拖放到 Xcode 或右键单击 "add files to (projectname)" 请注意,您必须 select 以下选项: a)Destination 如果需要复制项目 b) 添加到目标(您的构建名称) 4)通过名称引用文件,包括扩展名,例如 localNotification.soundName = "Chord.caf";

确保在测试之间从设备/模拟器中删除应用程序,否则您将看不到更改的结果。

如果您仍然有问题,请检查声音文件是否位于项目的根目录中。 检查声音文件 "Target Membership" 是否已在显示文件检查器中 select 编辑。