使用复制从其他 iOS 个应用程序接收文件
Receiving files from other iOS apps with Copy In
我希望我的应用程序能够从 files.app 应用程序接收 .wav 文件。我将 com.microsoft.waveform-audio 添加到 Info.plist 中的文档类型数组,我的应用程序在共享操作 sheet 中显示为“Open In X”(不是 Copy In)。我想实际复制文件,而不是就地打开它们,os 不允许我复制这些文件(错误代码 257)。我正在尝试复制 UIApplicationLaunchOptionsURLKey 路径中的文件,但是不行。
launchOptions 字典在 applicationDidLaunch WithOptions 中也包含 RequireOpenInPlace=1。
如何让其他应用程序使用 UIActivityViewController 将文件复制到我的应用程序?
如果您要打开文件 "in place"(不是复制),您应该使进程可以访问 url 引用的资源。
在访问文件之前尝试调用 url.startAccessingSecurityScopedResource()
。然后你应该可以复制文件了。
当您不再需要该文件时,请不要忘记用 url.stopAccessingSecurityScopedResource()
平衡调用。
参考:https://developer.apple.com/documentation/foundation/nsurl#1663809
编辑:
另一种解决方案可能是在 Info.plist 中将 LSSupportsOpeningDocumentsInPlace
设置为 NO
。然后您将始终在共享 sheet 中看到 "Copy to XYZ",因此系统会将文件复制到应用程序沙箱中的 Documents/Inbox 文件夹。
我希望我的应用程序能够从 files.app 应用程序接收 .wav 文件。我将 com.microsoft.waveform-audio 添加到 Info.plist 中的文档类型数组,我的应用程序在共享操作 sheet 中显示为“Open In X”(不是 Copy In)。我想实际复制文件,而不是就地打开它们,os 不允许我复制这些文件(错误代码 257)。我正在尝试复制 UIApplicationLaunchOptionsURLKey 路径中的文件,但是不行。
launchOptions 字典在 applicationDidLaunch WithOptions 中也包含 RequireOpenInPlace=1。
如何让其他应用程序使用 UIActivityViewController 将文件复制到我的应用程序?
如果您要打开文件 "in place"(不是复制),您应该使进程可以访问 url 引用的资源。
在访问文件之前尝试调用 url.startAccessingSecurityScopedResource()
。然后你应该可以复制文件了。
当您不再需要该文件时,请不要忘记用 url.stopAccessingSecurityScopedResource()
平衡调用。
参考:https://developer.apple.com/documentation/foundation/nsurl#1663809
编辑:
另一种解决方案可能是在 Info.plist 中将 LSSupportsOpeningDocumentsInPlace
设置为 NO
。然后您将始终在共享 sheet 中看到 "Copy to XYZ",因此系统会将文件复制到应用程序沙箱中的 Documents/Inbox 文件夹。