Dodawanie opcji" Otwórz w..." do aplikacji iOS

Na urządzeniach z systemem iOS aplikacja Mail oferuje " Otwórz w..."opcja dla załączników. Wymienione aplikacje zarejestrowały swoje Cfbundledocumenttypy w systemie operacyjnym. Zastanawiam się, w jaki sposób moja aplikacja może umożliwić użytkownikom otwieranie plików generowanych przez moją aplikację w innych aplikacjach. Czy Poczta jest jedyną aplikacją, która zapewnia tę funkcję?

Author: westsider, 2010-10-20

4 answers

Zapoznaj się z tematami programowania interakcji dokumentu dla iOS: rejestrowanie typów plików obsługiwanych przez Twoją aplikację .

Tak długo, jak podasz typy dokumentów w swoich informacjach.plist, inne aplikacje rozpoznające ten typ dokumentu będą wyświetlać Twoją aplikację w swoich opcjach "otwórz w". Oczywiście zakłada to, że aplikacja tworzy dokumenty, które mogą otwierać inne aplikacje.

 36
Author: Jay O'Conor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-12 00:13:18

Ten jest świetnym tutorialem, który mi pomógł.

Dodałem obsługę plików *.xdxf w mojej aplikacji. Krótko mówiąc, musisz zrobić dwie rzeczy. Po pierwsze-dodaj takie wpisy do pliku Plist Twojej aplikacji:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>XDXF Document</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.alwawee.xdxf</string>
        </array>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeDescription</key>
        <string>XDXF - XML Dictionary eXchange Format</string>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.text</string>
        </array>
        <key>UTTypeIdentifier</key>
        <string>com.alwawee.xdxf</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>xdxf</string>
            <key>public.mime-type</key>
            <string>text/xml</string>
        </dict>
    </dict>
</array>

Tutaj należy dodać UTExportedTypeDeclarations tylko wtedy, gdy typ pliku jest unikalny. Lub innymi słowy nie jest tutaj .

Metoda Second-handle delegate w AppDelegate:

- (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;
}
 18
Author: wzbozon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-19 20:22:57

Aby być widocznym na liście " open in..."dla wszystkich plików, musisz dodać to do plist

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>Open All Files</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSItemContentTypes</key>
        <array>
           <string>public.content</string>
           <string>public.data</string>
        </array>
    </dict>
</array>

Gdy twoja aplikacja pojawi się w "otwórz w...", musisz załadować ten plik. Większość witryn pokazuje, aby zaimplementować tę funkcję:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool
{
   println("Open URL "+url.path!)
}

Ale ta funkcja, która działała dobrze w IOS 7, zawiesza się w IOS 8. Musiałem zaimplementować następującą funkcję, aby uruchomić ją.

func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool 
{
   println("Open URL "+url.path!)
}
 4
Author: user2962499,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-14 01:12:11

Dodaję swoją aplikację na liście" otwórz w " w następujący sposób,

Wybierz info w YourAppName.cel Dodaj nowy filtr typu dokumentu, którego nazwa jest dowolna, a typ jest zdefiniowany w https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple_ref/doc/uid/TP40009259-SW1

Mam nadzieję, że ty też możesz odnieść sukces!!

Jednak funkcja, którą chcę zaimplementować to "Share" jak Facebook lub Slack do, I nie mogę się zatrzymać...każdy może mi dać wielkie brawa: (

 2
Author: Yvonne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-24 01:58:12