20

iOS アプリで GPX ファイルを開くことができません。拡張機能を登録し、いくつかのファイルを正しく開きます。つまり、Safari で GPX ファイルへのリンクをタップすると、ファイルを開くために使用するアプリケーションを尋ねるプロンプトが表示されます。次に、アプリケーションを選択すると、ファイルは期待どおりに処理されます。Safari の一部の Web サイトと電子メールの添付ファイルからのすべてのファイルで、プロンプトとアプリの選択が表示されず、ブラウザ/電子メール アプリにファイルの内容がテキストとして表示されます。

これは info.plist の設定に問題があるか、Safari やメール アプリに問題があると思われます。iOS アプリで XML または GPX ファイルを正しく開いた場合、info.plist から CFBundleDocumentTypes と UTExportedTypeDeclarations の設定を投稿しますか?

どんな考えでも大歓迎です。これが私のinfo.plistの適切なセクションです。オプションのタグをいくつか追加および削除しようとしました。これは最新のものですが、完全ではありません。

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>Icon.png</string>
            <string>Icon@2x.png</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>GPS eXchange Format</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>org.elsners.Indicium.gpx</string>
        </array>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.xml</string>
        </array>
        <key>UTTypeDescription</key>
        <string>GPS eXchange Format</string>
        <key>UTTypeIdentifier</key>
        <string>org.elsners.Indicium.gpx</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>GPX</string>
                <string>gpx</string>
            </array>
        </dict>
    </dict>
</array>
4

4 に答える 4

1

HTTP コンテンツ (Safari やメール アプリの場合) を操作する場合、そのコンテンツ タイプの処理を忘れてはなりません。ハンドル コンテンツ タイプのUniform Type Identifier (UTI)public.mime-typeは、サーバー応答のコンテンツ タイプ ヘッダーがapplication/gpxに設定されているとしましょう。したがって、plistUTTypeTagSpecificationでセクションに追加する必要があります。

<dict>
  <key>public.filename-extension</key>
   <array>
     <string>GPX</string>
     <string>gpx</string>
   </array>
   <key>public.mime-type</key>
   <string>application/gpx</string>
</dict>

注: Web での GPX データのコンテンツ タイプとして application /gpxapplication/gpx+xmlを見てきましたが、標準の MIME タイプがあるかどうかわからないので、両方を使用することをお勧めします。

于 2016-01-07T17:59:22.470 に答える
0

このコードを試してください...

(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{

    if (url != nil && [url isFileURL]) {

        //  xdxf file type handling

        if ([[url pathExtension] isEqualToString:@"xdxf"]) {

            NSLog(@"URL:%@", [url absoluteString]);

        }

    }

    return YES;
}
于 2015-06-12T11:29:32.557 に答える
0

次の部分を削除する必要があると思います。

<key>UTTypeConformsTo</key>
<array>
    <string>public.xml</string>
</array>

問題を再現し、削除して修正しました。

どうやらメールアプリは、他のアプリよりも XML 準拠の型をうまく処理できると考えて、処理をインターセプトしているようです。

Wallace Campos が投稿した回答からの変更を含めることもお勧めします。

于 2018-03-09T09:35:35.747 に答える