我有一个应用程序,要求用户记录自己的消息,以便将来播放。我的意图是使用UILocalNotification来做到这一点。不幸的是,似乎与本地通知相关的声音必须存储在主包中,但用户无法进行录制并将其保存在包中。
如何通过本地通知播放用户录制的声音文件?
或者 - 如果应用程序没有运行来捕获本地通知(没有等待用户响应警报)然后播放所需的声音文件,有没有办法?
谢谢!
答案 0 :(得分:4)
您可以通过如下设置其属性为UILocalNotification
分配(自定义)声音:
localNotification.soundName = @"MySoundFile.wav";
不幸的是,根据该引用,不可能使用未存储在主包中或由apple声明的声音文件:
对于此属性,请指定应用程序主包或UILocalNotificationDefaultSoundName中声音资源的文件名(包括扩展名)以请求默认系统声音。
答案 1 :(得分:3)
我认为这对ios 9来说是可能的,这就是苹果文档所说的:
对于iOS中的远程通知,您可以指定iOS在为应用呈现本地或远程通知时播放的自定义声音。声音文件可以位于客户端应用程序的主包中,也可以位于应用程序数据容器的Library / Sounds文件夹中。
我测试了将声音保存到Library / Sounds文件夹中,然后使用本地通知使用它,它在iOS 9上运行正常,之后我在iOS 8上尝试了同样的功能,但它没有用,所以我的结论是这仅适用于iOS 9
您可以通过以下方式访问库目录:
let fileManager = NSFileManager.defaultManager()
let libraryPath = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)[0]
let soundsPath = libraryPath + "/Sounds"
如果目录不存在,则必须创建目录:
fileManager.createDirectoryAtPath(soundsPath, withIntermediateDirectories: false, attributes: nil)
然后你可以在那里保存你的声音。
答案 2 :(得分:0)
本地通知的soundname
属性可以引用应用程序包中声音文件的路径。
无法使用用户语音的录音,因为它无法在运行时保存到应用程序包中。
除非用户点击了通知,否则您无法显示默认通知,然后打开应用并播放录制的语音。 这意味着,如果用户没有使用手机,他们唯一可能会收听录音的是他们拿起手机,解锁手机,然后点按通知。所以我相信这远非你想要的。