我正在开发一个级别编辑器,可以将级别文件发送到游戏应用程序。我在游戏中注册了一个自定义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>