4

我想使用邮件应用程序将 vCards 导入我的 iOS 应用程序。我已将 public.vcard 添加到我的项目列表中。如果我尝试在另一个应用程序中打开电子名片,UIDocumentInteractionController一切都会按预期工作。但是,如果我尝试在邮件应用程序中打开 vCard,则会在邮件中打开 vCard,而我的应用程序没有选择。有解决办法吗?

更新: vcard 的 plist 条目看起来像

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>vCard</string>
        <key>LSHandlerRank</key>
        <string>Default</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.vcard</string>
        </array>
    </dict>
</array>
4

2 回答 2

0

这个条目在我看来相当不完整。通常,如果您的应用程序能够打开某些类型,您需要有一个导入声明(如果文件格式归另一个应用程序所有)或导出声明(如果格式归您所有)

iOS 和 Mac 主要通过扩展来匹配 UTI,所以我想你也需要在声明中包含它。检查 iOS 上的 UTI 功能是否确实为您的文件扩展名分配了 public.vCard 类型。如果没有,则无法找到。

如果存在这样的关联,我会在您的 plist 中添加一个 UTImportedTypeDeclarations,如果没有,则添加一个 UTExportedTypeDeclarations

我写了这个教程来解释你需要的所有东西:http: //www.cocoanetics.com/2012/09/fun-with-uti/

于 2013-08-22T05:48:55.663 回答
0

从 iOS 7.0.4 开始,这似乎是不可能的。

iOS 似乎在处理邮件应用程序中的某些文件类型时与其他文件类型不同。在邮件应用程序中,您将无法在非 Apple 应用程序中打开这些文件类型。

您可以通过使用 UIDocumentInteractionController 以编程方式打开文件来验证这一点。这将提示用户在许多应用程序中打开文件(在所有注册此文件类型或更通用的应用程序中。Dropbox 应用程序例如几乎可以打开所有内容)。

当您向自己邮寄完全相同的文件并尝试在邮件应用程序中打开它时,您将无法获得这些选项(如 Dropbox)。

我通过注册 VCard/.vcf、Jpegs 和自定义类型来验证这一点。

于 2014-01-12T00:31:25.397 回答