在 UILocalNotification 中播放录制的音频

Posted

技术标签:

【中文标题】在 UILocalNotification 中播放录制的音频【英文标题】:Play recorded audio in UILocalNotification 【发布时间】:2012-06-02 05:40:38 【问题描述】:

我正在开发 AlarmClock 应用程序。在这个用户中记录他/她的声音并设置警报。为此我使用 UILocalNotification 并且我想在警报出现时设置录制的声音。 问题出在 UILocalNotification 的设置声音中。我为此冲浪,发现您必须将录制的文件保存在应用程序的主包中而不是文档目录中。所以我在应用程序的主包中搜索写入文件,发现您无法在其中写入文件主包。

所以请给我建议当通知到来时如何播放录制的音频。

http://itunes.apple.com/sg/app/aida-reminder-lite-voice-reminders/id469454389?mt=8&ls=1

此应用程序与我想要的功能相同。

【问题讨论】:

它在哪里说您只能播放保存在应用程序主包中的声音? @MichaelDautermann 下面的链接。所以我很困惑***.com/questions/7040551/… 【参考方案1】:

我认为这是不可能的。 UINotification 只能在主包中搜索自定义声音资源,您不能在运行时写入主包。

【讨论】:

是的,我也这么认为,但在 iTunes 的“aida 提醒”应用程序中,我认为它可以在付费版本中使用。所以我不确定它是否可能......谢谢您的回复。【参考方案2】:

iOS 10 开始,您可以使用位于Library/Sounds 目录中的声音文件进行通知。

查看UNNotificationSound.h头文件里面,方法的描述注释:

public convenience init(named name: String)

说:

为通知播放的声音文件的名称。声音 文件必须包含在应用程序的捆绑包或库/声音中 应用程序数据容器的文件夹。如果两个位置都存在文件 那么应用程序的数据容器中的文件将是首选。

所以,如果您对将外部声音文件放入Library/Sounds 文件夹有任何更改,您可以:

let content = UNMutableNotificationContent()
content.title = "Title"
content.subtitle = ""
content.body = "Message"
content.userInfo = nil
content.sound = UNNotificationSound.init(named: "sound-from-server.m4a")
// ...

【讨论】:

以上是关于在 UILocalNotification 中播放录制的音频的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 UILocalnotification 声音是不是正在播放

UILocalNotification 从应用文档播放声音

UILocalNotification 声音未播放

UILocalNotification 声音未在设备上播放

发送通知时是不是可以停止播放 UILocalNotification 的声音?

UILocalNotification 声音每隔一段时间播放一次