ios邮件应用程序无法在我的应用程序中打开vcard

时间:2012-08-08 21:01:56

标签: iphone objective-c ios email vcard

我想使用邮件应用将vCards导入我的iOS应用。我已将public.vcard添加到我的项目plist中。如果我尝试使用UIDocumentInteractionController在另一个应用中打开vcard,一切都按预期工作。但是,如果我尝试在邮件应用程序中打开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>

2 个答案:

答案 0 :(得分:0)

此条目对我来说相当不完整。通常,如果您的应用程序能够打开某些类型,您需要具有导入声明(如果文件格式由另一个应用程序拥有)或导出声明(如果该格式由您拥有)

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

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

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

答案 1 :(得分:0)

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

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

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

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

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