如何在iOS中注册自定义文件类型

19

我正在创建一个应用程序,希望让用户备份他们的文件(plist + m4a)。 我将文件压缩并将扩展名更改为自定义的扩展名(专门针对我的应用程序,例如“*.MyBackup”)。 然后用户可以通过电子邮件或iTunes文件共享导出文件。

我已经了解了CFBundleDocumentTypes,但并没有真正理解我需要做什么。

我目前卡在如何将我的扩展名与我的应用程序关联上这一步骤。 如果用户使用“custom”zip文件发送电子邮件,则应该能够使用我的应用程序打开它。

我该怎么做? “UTExportedTypeDeclarations”是什么?


可能是重复的问题:如何将文件类型与iPhone应用程序关联? - Brad Larson
2个回答

36

我希望能够放入我的项目info.plist的一部分,不需要过多解释。我认为这部分内容已经很容易理解了。

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>Icon-iPad-doc320.png</string>
            <string>Icon-iPad-doc.png</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>MyAppName File</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <!-- my app supports files with my custom extension (see UTExportedTypeDeclarations) -->
            <string>com.myurl.myapp.myextension</string>
            <!-- and csv files. -->
            <string>public.comma-separated-values-text</string>
        </array>
    </dict>
</array>



<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>MyAppName File</string>
        <key>UTTypeIdentifier</key>
        <string>com.myurl.myapp.myextension</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>myextension</string>
            <key>public.mime-type</key>
            <string>application/octet-stream</string>
        </dict>
    </dict>
</array>

啊啊啊...好的 :D 我还是一个完全的新手 :D - JNK
3
我在这里的回答中也提供了更多关于这些部分的解释:https://dev59.com/PXE85IYBdhLWcg3wdDEM#2781290 - Brad Larson
1
我正在尝试将一个以public.comma-separated-values-text UTI注册的应用程序所需的.csv文件通过电子邮件发送到我的手机,但是手机上的邮件应用程序不会将我的应用程序列为潜在的接收者之一。有任何想法吗?(关于stackoverflow礼仪,是否可以在这里提出这个问题?) - hkatz

2

请查看/var/mobile/Library/Preferences/com.apple.LaunchServices.plist


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接