UIDocumentInteractionController用于自定义文件类型 - 发送或接收应用程序是否有错误的UTI?

时间:2013-03-10 22:23:24

标签: ios nsfilemanager uti

我正在开发一个级别编辑器,可以将级别文件发送到游戏应用程序。我在游戏中注册了一个自定义UTI,以便它显示在UIDocumentInteractionController选项菜单中。

但是,当我选择“在MyApp中打开”时,我收到控制台错误“无效的LSOpenOperation请求 - 找不到打开文档的应用程序”

我尝试过建议的解决方案here,即为UTTypeConformsTo添加一个值。但是,这没有帮助。

我还阅读了以下讨论here,其中包括:

  

导出的UTI中设置的mime类型必须与mime类型匹配   电子邮件附件。我们的plist文件的mime类型设置为   application / octet-stream,但是电子邮件被附加为   application / json mime类型。如果这些不匹配,则表明您的   应用程序将出现在“打开方式...”菜单中,但它不会   尝试打开电子邮件附件时启动应用程序。我们   切换到application / json并修复了问题。

我理解如何在电子邮件附件中设置mime类型。但我正在打开一个使用NSFileManager在本地创建的文件。有什么方法我必须为本地文件设置mime类型?或者这更可能是其他问题吗?

不确定哪一个是重要的一个,但这里是我的设置(在游戏中,而不是编辑器 - 我假设游戏的Info.plist是因为上述错误导致的问题)对于文档类型:< / p>

<key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleDocumentTypes</key>
            <array>
                <dict>
                    <key>CFBundleTypeName</key>
                    <string>MyApp Level Pack</string>
                    <key>CFBundleTypeOSTypes</key>
                    <array>
                        <string>com.myapp.sslp</string>
                    </array>
                    <key>CFBundleTypeRole</key>
                    <string>Viewer</string>
                    <key>LSHandlerRank</key>
                    <string>Owner</string>
                    <key>LSItemContentTypes</key>
                    <array>
                        <string>public.json</string>
                        <string>com.myapp.sslp</string>
                    </array>
                </dict>
            </array>
            <key>CFBundleTypeName</key>
            <string>MyApp Level Pack</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.myapp.sslp</string>
                <string>public.json</string>
            </array>
        </dict>
    </array>

对于导出类型声明:

<key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTExportedTypeDeclarations</key>
            <array>
                <dict>
                    <key>UTTypeConformsTo</key>
                    <array>
                        <string>public.data</string>
                        <string>public.json</string>
                    </array>
                    <key>UTTypeDescription</key>
                    <string>MyApp Level Pack</string>
                    <key>UTTypeIdentifier</key>
                    <string>com.myapp.sslp</string>
                    <key>UTTypeTagSpecification</key>
                    <dict>
                        <key>public.filename-extension</key>
                        <string>sslp</string>
                        <key>public.mime-type</key>
                        <string>application/json</string>
                    </dict>
                </dict>
            </array>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.data</string>
                <string>public.json</string>
            </array>
            <key>UTTypeDescription</key>
            <string>MyApp Level Pack</string>
            <key>UTTypeIdentifier</key>
            <string>com.myapp.sslp</string>
        </dict>
    </array>

0 个答案:

没有答案