在我的iOS应用程序中,如何播放存储在应用程序文档目录中的声音文件以获取本地通知,而不是应用程序包内部的声音文件?
我在App Store看到过几个应用程序这样做,我想知道这是怎么回事。
答案 0 :(得分:3)
实际上,可以在应用程序主程序包(NSBundle)中的本地通知中播放自定义声音。
声音必须存储在Library/Sounds
目录中,例如:
/var/mobile/Containers/Data/Application/DD7E6BA0-2FC0-4DE0-95BF-C2E9C9A94E08/Library/Sounds/mySound.caf
当您在UILocalNotification soundName
属性中引用声音文件时,您只需编写文件名,而不是完整的目录路径:
alert.soundName = @"mySound.caf";
测试并使用iOS9.3.5。我还没有尝试过其他iOS版本。
<强>脚注:强>
在搜索有关远程通知{2004}的Apple文档时,我碰巧找到了这些信息 - 具体来说,“有效负载密钥”#39;部分,它提到了声音。
Apple的Local&amp; amp;和远程通知(Here)还提到如果声音文件位于应用程序的主包或数据容器中,则可以使用声音文件:
要播放声音,请为soundName属性指定声音。您可以在应用程序的主包(或数据容器)中指定非本地化自定义声音的文件名,也可以指定UILocalNotificationDefaultSoundName以获取默认系统声音。警报信息的显示或图标的标记应始终伴随声音;在没有其他通知类型的情况下不应播放声音。
答案 1 :(得分:0)
否则您无法播放不在捆绑包中的音频文件,也无法在运行时修改应用程序包。 Apple要求本地通知的所有声音与应用程序捆绑在一起的一个原因可能是出于安全原因,这样可以在审核过程中检查所有捆绑文件的安全风险。
答案 2 :(得分:0)
完全.....
You can not play audio file stored in document directory for alarm as a local push notification.
我也经历了应用程序商店上的各种应用程序。这些应用程序基本上看起来像是从文档目录中播放自定义音频以进行本地推送通知,但它不是.insted使用推送通知,当我们点击时通知到来查看该通知的按钮,将调用生成本地推送通知的应用程序,最后播放所选的音频文件。
通过这种方式,应用程序看起来像使用文档目录中的自定义音频文件的自定义推送通知