2012-05-07 57 views
19

Mam problemy z otwieraniem plików GPX w mojej aplikacji na iOS. Zarejestrowałem rozszerzenie i niektóre pliki otworzyły się poprawnie, to znaczy, kiedy kliknę link do pliku GPX w Safari, wyświetla monit pytający, którą aplikację chcę użyć do otwarcia pliku. Następnie wybieram moją aplikację, a plik jest przetwarzany zgodnie z oczekiwaniami. W niektórych witrynach w Safari i wszystkich plikach z załączników wiadomości e-mail monit i wybór aplikacji nie są wyświetlane, a przeglądarka/aplikacja e-mail wyświetla zawartość pliku jako tekst.Rejestrowanie pliku GPX (lub XML) do otwarcia w aplikacji iOS

Podejrzewam, że jest to problem z ustawieniami info.plist lub ewentualnie z aplikacjami Safari i e-mail. Jeśli poprawnie otwierasz pliki XML lub GPX w aplikacjach ios, czy umieścisz ustawienia CFBundleDocumentTypes i UTExportedTypeDeclarations z pliku info.plist?

Wszelkie uwagi są mile widziane. Oto odpowiednia sekcja z mojej info.plist. Próbowałem dodać i usunąć niektóre opcjonalne znaczniki, jest to najnowszy, ale nie najbardziej kompletny.

<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, czy kiedykolwiek rozwiązałeś ten problem? Pamiętasz o rozwiązaniu dla tych, którzy wciąż szukają? – mstenroos

+0

Nie, nie znalazłem rozwiązania, przepraszam. W załącznikach do wiadomości e-mail pokazuje prawidłową ikonę, ale po jej kliknięciu otwiera się jako plik tekstowy. – MirekE

+0

Najnowsza klasa Stanford, jeśli dokładnie o tym temacie! Być może wysłali próbny kod – Yariv

Odpowiedz

0

Spróbuj tego kodu ...

(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, dziękuję za komentarz. Mam podobny kod w mojej aplikacji. Podany przykład kodu posłużyłby do przetworzenia pliku, ale pierwotny problem polega na tym, że aplikacja nie jest uruchamiana, gdy użytkownik aktywuje plik GPX w innej aplikacji. – MirekE

1

Podczas pracy z zawartością HTTP (co ma miejsce w przypadku Safari and Mail app), nie należy zapominać, aby obsługiwać swój typ zawartości. Uniform Type Identifier (UTI) do uchwytu typu zawartości jest public.mime-type i załóżmy, że nagłówek typu zawartości odpowiedzi serwera jest ustawiony na application/GPX, więc w swojej plist należy dodać do sekcji 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> 

Uwaga: widziałem application/gpx i application/gpx + xml jako typ zawartości dla danych GPX całym internecie i nie wiem, czy jest to standardowy typ MIME więc lepiej używać zarówno .

0

Myślę, że po części muszą być usunięte:

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

I zamieszczonym problem z nim, a ustalona przez usunięcie.

Wygląda na to, że aplikacja pocztowa radzi sobie z obsługą typów zgodnych z XML lepiej niż inne aplikacje i przechwytuje obsługę.

Polecam również wprowadzenie zmian od answer posted by Wallace Campos.

Powiązane problemy