繁体   English   中英

如何快速访问存储在另一个应用程序中的声音文件?

[英]how to access a sound file stored in another app in swift?

这个问题很像在两个或多个iPhone应用程序之间共享数据,除了:

  • 我在寻找一种方法使用迅速做到这一点的是iOS 8+(或9+)应用程序
  • 我希望能够使用第一个应用程序中包含的声音文件,因此我正在制作的复活节彩蛋仅在用户同时安装两个应用程序时可用
  • 由于这是复活节彩蛋的一部分,因此我不想使用任何会导致屏幕上显示任何多余内容的方法,例如浏览器重定向或某种权限弹出窗口

(这基本上排除了使用共享表和自定义网址来传递数据,如上面的文章所述)

如果有帮助,我AVAudioSession在第一个应用程序中使用AVAudioPlayerAVAudioSession播放声音。

使用应用组

您可以通过NSUserDefaults共享实际的NSData

if let userDefaults = NSUserDefaults(suiteName: <group>) {
    userDefaults.setObject(obj, forKey: key)
}

并从同一组的另一个应用中检索,如下所示:

if let userDefaults = NSUserDefaults(suiteName: <group>) {
    if let obj = userDefaults.objectForKey(key)  {
        // magic
    }
}

看起来,通过用户默认值传递数据的唯一限制是设备存储容量,并且由于NSUserDefaults接受NSData作为存储格式,因此它成为共享花絮信息的主要候选者。

如果这两个应用程序都是您的,则可以在第二个应用程序中实现自定义url方案,然后从第一个应用程序询问是否知道如何使用该方案打开URL。 如果答案是肯定的,则说明该应用已安装。 该函数称为canOpenURL 这是UIApplication的实例方法。

我隐约记得在iOS 9和更高版本中,Apple添加了一个限制,即您必须在info.plist中注册要查询的URL,但是我不记得详细信息。 这不会阻止该方案的成功,但这是您必须采取的额外步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM