自定义本地通知声音不起作用
Posted
技术标签:
【中文标题】自定义本地通知声音不起作用【英文标题】:Custom Local Notification Sound Not Working 【发布时间】:2017-11-21 08:30:09 【问题描述】:我正在尝试为本地通知提供自定义通知声音。但它仍然以默认声音播放
let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey:
"Test", arguments: nil)
content.body = NSString.localizedUserNotificationString(forKey:
"Test message", arguments: nil)
content.sound = UNNotificationSound.init(named: "marbles-daniel_simon.mp3")
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60,
repeats: true)
let request = UNNotificationRequest(identifier: "test", content: content, trigger: trigger)
center.add(request, withCompletionHandler: nil)
我在下面的项目中添加了声音文件
【问题讨论】:
你有没有弄清楚问题是什么?您在什么设备上进行测试? @WBuck 不,我在 iPhone 6 上测试 我遇到了完全相同的问题,我正在 iPhone 6 上进行测试。虽然它在模拟器中工作,但使用 iPhoneX 和 iPhone8 ......我发布了一个 SO 问题好。我想知道这是否是设备问题。我将参考你的问题。 @Wbuck 请也检查其他设备。我不确定设备问题。 我可能会在下周在另一台设备上进行测试。不幸的是,我和我妻子都只有 iPhone 6。我需要问问朋友是否可以借他们的手机进行测试。 【参考方案1】:我在 Apple 文档中检查了您关于本地和远程通知的问题,这是一些有趣的事情:
线性 PCM MA4 (IMA/ADPCM) 微定律 法律本地和远程通知可以指定在发送通知时播放的自定义警报声音。您可以将音频数据打包到 aiff、wav 或 caf 文件中。因为它们是由系统声音工具播放的,所以自定义声音必须采用以下音频数据格式之一:
将自定义声音文件放置在您的应用程序包中或应用程序容器目录的 Library/Sounds 文件夹中。 自定义声音在播放时必须少于 30 秒。如果自定义声音超过该限制,则会播放默认系统声音。 指定自定义声音时,仅指定要播放的声音文件的文件名。如果系统找到具有您提供的名称的合适声音文件,则会在发送通知时播放该声音。如果系统没有找到合适的声音文件,则播放默认声音。
content.sound = UNNotificationSound(named: "MySound.aiff")
更新:将文件添加到 Xcode 项目根目录。确保添加文件时选择添加到目标,以便它们自动添加到捆绑资源中
【讨论】:
是的,我发现了。 我添加了 .aiff 文件。但是对我不起作用 content.sound = UNNotificationSound.init(named: "Bach1-1.aiff") 不到30秒?您的声音位于应用容器目录的 Library/Sounds 文件夹中? 只需 12 秒。我就像上图一样放置 当您复制和粘贴时,您是否检查过将声音添加到您的应用目标?将文件添加到 Xcode 项目根目录。确保添加文件时选择添加到目标,以便它们自动添加到捆绑资源中【参考方案2】:为了让这个答案更容易.. 1. 确保声音格式正确(.caf/m4r 等) 2. 选择构建设置和构建规则之间的构建阶段选项卡 3. 确保您的应用程序是在右侧平面上在 Projects then targets 下选择的目标。 4. 现在展开复制捆绑资源选项卡 5. 现在单击加号按钮添加您的声音。当屏幕弹出时选择其他并搜索您的声音(如果需要,请选择复制选项卡) 6. 就是这样。
////// 确保您在应用程序委托文件中所做的其余部分确实使用选项完成了启动。 现在你可以通过调用它来播放声音 init(sound: "yoursoundname.caf")
【讨论】:
以上是关于自定义本地通知声音不起作用的主要内容,如果未能解决你的问题,请参考以下文章