3

我无法UIActivityViewController附加使用创建的自定义文件类型UIDocument。任何人都可以帮忙吗?

即使文件 URL 有效,电子邮件也根本没有附件,并且指向一个带有.wki扩展名(我的自定义扩展名)的文件,该文件是通过UIDocument.

发送电子邮件的代码:

    NSURL *url = self.entrySelected.fileURL;

    NSArray *activityItems = @[url];

    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
    [self presentViewController:activityVC animated:YES completion:nil];

文档类型和导出的 UTI 的 Info-plist 设置是:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>MyApp Doc</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.stephencox.myApp.doc</string>
        </array>
        <key>LSTypeIsPackage</key>
        <string>YES</string>
    </dict>
</array>


<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>com.apple.package</string>
        </array>
        <key>UTTypeDescription</key>
        <string>MyApp Doc</string>
        <key>UTTypeIdentifier</key>
        <string>com.stephencox.myApp.doc</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>wki</string>
            </array>
        </dict>
    </dict>
</array>
4

2 回答 2

0

我自己的文件类型也有同样的问题。经过大量实验,我找到了解决方案,希望它也适用于您。

必须为文件指定 MIME 类型,例如:

...
    <key>UTTypeTagSpecification</key>
    <dict>
        <key>public.filename-extension</key>
        <string>wki</string>
        <key>public.mime-type</key>
        <string>application/x-wki</string>
    </dict>
...

于 2014-01-08T13:48:40.580 回答
0

我最终通过设置另一种文档类型和 UTExportedTypeDeclaration 解决了我的问题。

我留下了第一个(假设 UIDocument 管理需要它),并为压缩文件设置了另一种 doc 类型,其中 UTTypeConformsTo 键设置为“public.data”,并为 public.mime-type 添加了一个附加键(设置为“应用程序/myappname”)。我将压缩文件发送到一个临时目录,并让 UIActivityViewController 从这个 URL 中提取文件。

希望这对其他人有帮助!

于 2014-03-15T09:55:21.030 回答