2012-05-07 3 views
19

Problemi di apertura dei file GPX nella mia app iOS. Ho registrato l'estensione e alcuni file si aprono correttamente, cioè quando tocco un link al file GPX in Safari, mostra un prompt che mi chiede quale applicazione voglio usare per aprire il file. Quindi seleziono la mia applicazione e il file viene elaborato come previsto. Con alcuni siti Web in Safari e con tutti i file dagli allegati di posta elettronica, la selezione di prompt e app non viene visualizzata e l'applicazione browser/email mostra il contenuto del file come testo.Registrazione del file GPX (o XML) da aprire nell'app per iOS

Sospetto che questo sia un problema con le impostazioni di info.plist o eventualmente con le app di Safari ed e-mail. Se apri correttamente i file XML o GPX nelle app ios, pubblichi le tue impostazioni CFBundleDocumentTypes e UTExportedTypeDeclarations da info.plist?

Ogni pensiero è benvenuto. Ecco la sezione appropriata dal mio info.plist. Ho provato ad aggiungere e rimuovere alcuni tag opzionali, questo è l'ultimo, ma non il più completo.

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeIconFiles</key> 
     <array> 
      <string>Icon.png</string> 
      <string>[email protected]</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> 
+0

Mirek, hai mai risolto questo problema? Mente postando una soluzione per coloro che stanno ancora cercando? – mstenroos

+0

No, non ho trovato una soluzione, mi dispiace. Con gli allegati di posta elettronica, mostra l'icona corretta, ma quando la tocco, si apre come un file di testo. – MirekE

+0

L'ultima lezione di Stanford se si parla esattamente di questo argomento! Potrebbero aver pubblicato il codice di esempio – Yariv

risposta

0

provare questo codice ...

(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; 
} 
+0

HI Jaffer, grazie per il tuo commento. Ho un codice simile nella mia app. L'esempio di codice che hai fornito elaborerebbe il file, ma il problema originale è che l'app non viene avviata quando l'utente attiva il file GPX in un'altra app. – MirekE

1

Quando si lavora con i contenuti HTTP (che è il caso di Safari and Mail app), non si deve dimenticare di gestire il suo tipo di contenuto. Il Uniform Type Identifier (UTI) per il tipo di contenuto impugnatura è public.mime-type e diciamo che il tipo di contenuto intestazione di una risposta del server è impostato su application/gpx, così nel vostro plist è necessario aggiungere alla sezione UTTypeTagSpecification:

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

Nota: ho visto application/GPX e application/GPX + xml come tipo di contenuto per i dati GPX attorno web e non so se c'è un tipo MIME standard in modo che sia meglio utilizzare sia .

0

Penso che la parte seguente deve essere rimosso:

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

ho riprodotto il problema con esso, e fissato con la rimozione.

Apparentemente l'app di posta ritiene che sia in grado di gestire i tipi conformi a XML meglio di altre app e ne intercetta la gestione.

Vorrei anche includere le modifiche da answer posted by Wallace Campos.