我有一个应用程序,要求用户录制他们自己的消息,以便在未来的某个时间播放。我的意图是使用UILocalNotification来实现这一点。不幸的是,似乎与本地通知相关联的声音必须存储在主束中,但是用户不能录制并将其保存在束中。
如何通过本地通知播放用户录制的声音文件?
或者-如果应用程序没有运行,有没有办法捕获本地通知(不等待用户响应警报),然后播放所需的声音文件?
谢谢!
发布于 2011-07-03 08:03:23
通过设置UILocalNotification的属性,可以将(自定义)声音分配给它,如下所示:
localNotification.soundName = @"MySoundFile.wav";不幸的是,根据参考,不可能使用没有存储在主包中或由apple声明的声音文件:
对于此属性,请在应用程序的主包或UILocalNotificationDefaultSoundName中指定声音资源的文件名(包括扩展名),以请求默认系统声音。
另请参阅UILocalNotification Class Reference #soundName
发布于 2016-02-17 02:05:54
我认为这在iOS9上是可能的,这是苹果的文档所说的:
对于远程通知在iOS中,您可以指定iOS在显示应用程序的本地或远程通知时播放的自定义声音。声音文件可以位于客户端应用程序的主包中,也可以位于应用程序数据容器的Library/ sound文件夹中。
我测试了将声音保存到库/声音文件夹中,然后将其与本地通知一起使用,它在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)然后你可以在那里保存你的声音。
发布于 2014-08-15 16:57:15
本地通知的soundname属性可以引用应用程序捆绑包中声音文件的路径。无法使用用户语音的录音,因为无法在运行时将其保存到应用捆绑包。
除非用户点击了通知,否则无法显示默认通知,然后打开应用程序并播放录制的语音。这意味着,如果用户不使用电话,他们收听录音的唯一机会就是拿起电话,解锁,然后点击通知。所以我相信这和你想要的相去甚远。
https://stackoverflow.com/questions/6514423
复制相似问题