2012-05-07 27 views
19

Tengo problemas para abrir archivos GPX en mi aplicación iOS. Registré la extensión y algunos archivos se abrieron correctamente, es cuando toco un enlace al archivo GPX en Safari, muestra un mensaje preguntándome qué aplicación quiero usar para abrir el archivo. Luego selecciono mi aplicación y el archivo se procesa como se esperaba. Con algunos sitios web en Safari y con todos los archivos de archivos adjuntos de correo electrónico, la solicitud y la selección de la aplicación no se muestran y la aplicación de navegador/correo electrónico muestra el contenido del archivo como texto.Registro de archivos GPX (o XML) para abrir en la aplicación iOS

Sospecho que este es un problema con la configuración de info.plist o posiblemente con las aplicaciones de Safari y de correo electrónico. Si abre archivos XML o GPX correctamente en sus aplicaciones ios, ¿podría publicar sus configuraciones CFBundleDocumentTypes y UTExportedTypeDeclarations desde info.plist?

Cualquier pensamiento es bienvenido. Aquí está la sección apropiada de mi info.plist. Traté de agregar y eliminar algunas etiquetas opcionales, esta es la última, pero no la más completa.

<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, ¿alguna vez resolvió este problema? ¿Te importa publicar una solución para los que aún miran? – mstenroos

+0

No, no encontré una solución, lo siento. Con los archivos adjuntos de correo electrónico, muestra el icono correcto, pero cuando lo toco, se abre como un archivo de texto. – MirekE

+0

¡La última clase de Stanford es exactamente sobre este tema! Es posible que hayan publicado el código de muestra – Yariv

Respuesta

0

probar este código ...

(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, gracias por su comentario. Tengo un código similar en mi aplicación. El ejemplo de código que proporcionó procesará el archivo, pero el problema original es que la aplicación no se inicia cuando el usuario activa el archivo GPX en otra aplicación. – MirekE

1

Cuando se trabaja con contenido HTTP (que es el caso de Safari y aplicación de correo), no hay que olvidar para manejar su tipo de contenido. El Uniform Type Identifier (ITU) para el tipo de contenido mango es public.mime-type y digamos que la cabecera de tipo de contenido de una respuesta del servidor se establece en application/GPX, por lo que en su plist debe agregar a la sección 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: he visto application/GPX y application/GPX + xml como tipo de contenido para datos GPX alrededor de la web y no sé si hay un tipo de MIME estándar por lo que es mejor usar tanto .

0

creo que la siguiente parte se debe quitar:

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

que reproduce el problema con él, y se fija mediante la retirada.

Aparentemente, la aplicación de correo cree que puede manejar tipos que se ajustan a XML mejor que otras aplicaciones, e intercepta el manejo.

También recomendaría incluir cambios de answer posted by Wallace Campos.

Cuestiones relacionadas