【问题标题】:Receiving files from other iOS apps with Copy In使用 Copy In 从其他 iOS 应用程序接收文件
【发布时间】:2020-04-13 20:34:51
【问题描述】:

我希望我的应用从 files.app 应用接收 .wav 文件。我将 com.microsoft.waveform-audio 添加到 Info.plist 中的 Document Types 数组中,我的应用程序在共享操作表中显示为“Open In X”(而不是 Copy In)。我想实际复制文件,而不是就地打开它们,并且操作系统不允许我复制这些文件(错误代码 257)。我正在尝试将文件复制到 UIApplicationLaunchOptionsURLKey 路径中,但不行。

launchOptions 字典在 applicationDidLaunch WithOptions 中也包含 RequireOpenInPlace=1。

如何让其他应用使用 UIActivityViewController 复制文件到我的?

【问题讨论】:

    标签: ios sharing uiactivityviewcontroller uiapplicationdelegate uti


    【解决方案1】:

    如果您正在“就地”打开文件(而不是复制),您应该使 url 引用的资源可供进程访问。

    在访问文件之前尝试调用url.startAccessingSecurityScopedResource()。然后你应该可以复制文件了。

    当您不再需要该文件时,不要忘记用url.stopAccessingSecurityScopedResource() 平衡呼叫。

    参考:https://developer.apple.com/documentation/foundation/nsurl#1663809

    编辑: 另一个解决方案可能是在 Info.plist 中将 LSSupportsOpeningDocumentsInPlace 设置为 NO。然后,您将始终在共享表中看到“复制到 XYZ”,因此系统会将文件复制到您的应用沙箱中的 Documents/Inbox 文件夹中。

    【讨论】:

    • 是的,原来是问题所在。不了解安全范围的资源。
    猜你喜欢
    • 2015-05-02
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2017-06-07
    • 2020-01-22
    • 2018-11-06
    相关资源
    最近更新 更多