swift 如何访问存储在另一个应用程序中的声音文件?
how to access a sound file stored in another app in swift?
这个问题很像 Share data between two or more iPhone applications 除了:
- 我正在寻找一种方法在 iOS 8+(或 9+)应用程序中使用 swift
- 我希望能够使用第一个应用程序中包含的声音文件,这样我制作的彩蛋只有在用户同时安装了这两个应用程序时才可用
- 由于这是彩蛋的一部分,我不想使用任何会导致在屏幕上显示任何额外内容的方法,例如浏览器重定向或某种权限弹出窗口
(这基本上排除了使用共享 sheet 和自定义 url 来传递数据,如上文 post 所述)
我在第一个应用程序中使用 AVAudioPlayer
和 AVAudioSession
来播放声音,如果这有帮助的话。
如果这两个应用都是您的,您可以在第二个应用中实施自定义 url 方案,然后从第一个应用询问它是否知道如何使用该方案打开 URL。如果答案是肯定的,则安装该应用程序。该函数称为 canOpenURL
。它是 UIApplication
.
的实例方法
我依稀记得在iOS 9及以后的版本中,Apple添加了一个限制,你必须在你的info.plist中注册你要询问的URL,但是我不记得细节了。这不会阻止此方案的工作,但这是您必须采取的额外步骤。
使用应用组
您可以通过 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
作为存储格式,它成为共享花絮的主要候选者信息。
这个问题很像 Share data between two or more iPhone applications 除了:
- 我正在寻找一种方法在 iOS 8+(或 9+)应用程序中使用 swift
- 我希望能够使用第一个应用程序中包含的声音文件,这样我制作的彩蛋只有在用户同时安装了这两个应用程序时才可用
- 由于这是彩蛋的一部分,我不想使用任何会导致在屏幕上显示任何额外内容的方法,例如浏览器重定向或某种权限弹出窗口
(这基本上排除了使用共享 sheet 和自定义 url 来传递数据,如上文 post 所述)
我在第一个应用程序中使用 AVAudioPlayer
和 AVAudioSession
来播放声音,如果这有帮助的话。
如果这两个应用都是您的,您可以在第二个应用中实施自定义 url 方案,然后从第一个应用询问它是否知道如何使用该方案打开 URL。如果答案是肯定的,则安装该应用程序。该函数称为 canOpenURL
。它是 UIApplication
.
我依稀记得在iOS 9及以后的版本中,Apple添加了一个限制,你必须在你的info.plist中注册你要询问的URL,但是我不记得细节了。这不会阻止此方案的工作,但这是您必须采取的额外步骤。
使用应用组
您可以通过 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
作为存储格式,它成为共享花絮的主要候选者信息。