レベル ファイルをゲーム アプリに送信するレベル エディターを開発しています。UIDocumentInteractionController
オプション メニューに表示されるように、ゲームにカスタム UTI を登録しました。
ただし、「MyApp で開く」を選択すると、「無効な LSOpenOperation 要求 - ドキュメントを開くアプリケーションが見つかりません」というコンソール エラーが表示されます。
ここで提案されている解決策を試しました。これは、の値を追加することですUTTypeConformsTo
。ただし、これは役に立ちませんでした。
また、以下を含む次の議論をここで読みました。
エクスポートされた UTI で設定された MIME タイプは、電子メールの添付ファイルの MIME タイプと一致する必要があります。plist ファイルの MIME タイプは application/octet-stream に設定されていましたが、電子メールは application/json MIME タイプとして添付されていました。これらが一致しない場合、アプリケーションは [Open with...] メニューに表示されるように見えますが、電子メールの添付ファイルを開こうとしてもアプリケーションは起動しません。両方を application/json に切り替えて、問題を修正しました。
メールの添付ファイルで MIME タイプがどのように設定されるかを理解しています。しかし、NSFileManager でローカルに作成されたファイルを開いています。ローカル ファイルの MIME タイプを設定する方法はありますか? それとも、これは他の問題である可能性が高いですか?
これらのどれが重要なのかはわかりませんが、ドキュメントタイプの設定は次のとおりです(エディターではなくゲームで—上記のエラーのためにゲームの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>