使用UIActivityViewController的自定义文件类型

时间:2013-01-17 19:58:04

标签: ios

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

即使文件网址有效,该电子邮件也完全没有附件,并且指向通过.wki的子类创建的扩展名为UIDocument的文件(我的自定义扩展名)。< / p>

发送电子邮件的代码:

    NSURL *url = self.entrySelected.fileURL;

    NSArray *activityItems = @[url];

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

文档类型和导出的UTI的信息播放器设置为:

<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>

2 个答案:

答案 0 :(得分: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>
...

答案 1 :(得分:0)

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

我独自离开了第一个(假设UIDocument管理需要它),并为压缩文件设置另一个doc类型,其中UTTypeConformsTo键设置为“public.data”,并为公共添加了另一个键。 mime-type(设置为“applications / myappname”)。我将压缩文件发送到临时目录,并让UIActivityViewController从此URL中获取文件。

希望这有助于其他人!