保存iOS共享扩展中的文件以供主机应用程序使用

时间:2015-10-14 17:28:14

标签: ios swift ios-app-extension ios-sharesheet

我正在开发一个应用扩展程序,我想让用户与主机应用程序共享各种文件。

示例:选择照片,通过应用程序选择共享,照片将保存到共享文件夹&然后在用户下次打开主机应用程序时可用。

我已准备好从共享文件夹中读取主机应用程序,并且现在只使用图像设置扩展程序,但我坚持的位是检索文件数据(blob或路径我不确定? )然后将其写入共享文件夹。

以下是扩展程序的相关部分:

 override func didSelectPost() {
    let content = extensionContext!.inputItems[0] as NSExtensionItem
    for attachment in content.attachments as [NSItemProvider] {

        // Image attachment
        if attachment.hasItemConformingToTypeIdentifier(kUTTypeImage as String) {
            // save this to file in shared folder for host app to retrieve...
        }

    }

    self.extensionContext!.completeRequestReturningItems([], completionHandler: nil)
}

我看了很多其他问题,但似乎找不到适合我用例的任何问题。

1 个答案:

答案 0 :(得分:0)

据我所知,我只想回答你的问题:

  

请检查Plist文件,如下图所示:

enter image description here

如果它与我的建议不一样,那就去做吧......

我希望,您添加了" 应用程序组"从选择项目 - > 功能 ...

  

如果上面提到plist不工作​​,那么请通过SUBQUERY   以下:

<key>NSExtenstionActivationRule</key>
<string>SUBQUERY (
            extensionItems,
            $extensionItem,
            SUBQUERY (
            $extensionItem.attachments,
            $attachment,

            (
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.adobe.pdf"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.png"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.jpeg"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.jpeg-2000"
            )
            ).@count == $extensionItem.attachments.@count
            ).@count == 1
</string>
  

如果那时也没有工作,那么请通过

App Extension by developer.apple.com

我认为,它会帮助......