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ę?
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.
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;
}
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!)
}
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,
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: (
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