【问题标题】:how to access a sound file stored in another app in swift?如何快速访问存储在另一个应用程序中的声音文件?
【发布时间】:2017-05-18 05:27:09
【问题描述】:

这个问题很像Share data between two or more iPhone applications,除了:

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

(这基本上排除了使用共享表和自定义 url 来传递数据,如上面帖子中所述)

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

【问题讨论】:

标签: ios swift avaudioplayer sandbox


【解决方案1】:

使用应用组

您可以通过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 作为存储格式,它成为共享花絮信息的主要候选者。

【讨论】:

  • 不错。让我们删除一些 cmets,包括这个!
【解决方案2】:

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

我依稀记得在 iOS 9 及更高版本中,Apple 增加了一个限制,您必须在 info.plist 中注册您要询问的 URL,但我不记得细节了。这不会阻止此方案发挥作用,但这是您必须采取的额外步骤。

【讨论】:

  • 如何在不改变用户屏幕显示的情况下传递音频数据或从第二个应用程序访问它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
相关资源
最近更新 更多