2

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

但是,当我选择“在 MyApp 中打开”时,我收到控制台错误“Invalid LSOpenOperation request - No applications found to open document”

我已经尝试过这里建议的解决方案,即为UTTypeConformsTo. 然而,这并没有帮助。

我还在这里阅读了以下讨论,其中包括:

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

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

不确定其中哪一个是重要的,但这是我的文档类型设置(在游戏中,而不是编辑器——我假设由于上述错误,游戏的 Info.plist 是问题):

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

0 回答 0