Страницы

Поиск по вопросам

четверг, 30 мая 2019 г.

Как получать html документы из другого приложения?

Во многих программах есть кнопка "Share", которая открывает список приложений, умеющих обрабатывать этот тип файлов, например:

Я хочу, чтобы мое приложение могло обрабатывать html файлы. Например пользователь нажимает кнопку "Share" в Google Chrome или в DropBox, а ссылка передается моему приложению. Где искать информацию?


Ответ

Сначала в Info.plist прописываете:
CFBundleDocumentTypes CFBundleTypeName HTML LSHandlerRank Alternate LSItemContentTypes public.html public.xhtml
В AppDelegate:
//Swift func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { //do something with html file here return true }
//Objective-C - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { //do something with html file here return YES; }
И передавайте:


Чтобы получить url из Safari создайте App Extension:
File -> New -> Target -> Share Extension

Соглашаетесь создать схему, запускаете и видите:

Схема как это работает:
Подробнее в Документации
Далее необходимо настроить. Для начала в
- (BOOL)isContentValid { // Do validation of contentText and/or NSExtensionContext attachments here return YES; }
Проверяете что Вам необходимо и если подходит, return YES; если что-то не то return NO;
Включить и настроить App Groups:

И сохранять данные можно через NSUserDefaults:
NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.test.one"]; [shared setObject:object forKey:@"yourkey"]; [shared synchronize];
Получить:
NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.test.one"]; id value = [shared valueForKey:@"yourkey"]; NSLog(@"%@",value);

Комментариев нет:

Отправить комментарий