Я разрабатываю пользовательскую клавиатуру для бета-версии iOS 8 и хочу сообщить пользователю, как включить ее в содержащем приложении, если моя пользовательская клавиатура не включена, есть ли способ определить, что расширение приложения включено?
Как определить, что расширение приложения включено в приложении на iOS 8?
comment
Аналогичный (более свежий) вопрос: 25714326" title="как определить, активирована ли пользовательская клавиатура из контейнера клавиатур"> stackoverflow.com/questions/25675628/
- person dandoen   schedule 09.09.2014
Ответы (1)
прежде всего давайте установим некоторые константы, чтобы было легко понять друг друга:
- containing app = the app that installs the extension and holds the extension binary and target
- хост-приложение = приложение, внутри которого работает расширение (другая сторона)
- extension = любой из новых компонентов/модулей iOS8, которые мы теперь можем встроить в общесистемное использование: настраиваемые клавиатуры, виджеты Today, эффекты редактирования фотографий и многое другое.
Apple также выпустила более тихий API под названием App Groups API. Этот API позволяет разработчику группировать n расширений под 1 идентификатором пакета и создает канал связи между приложением и содержащимися в нем расширениями.
вы можете обмениваться данными между расширениями и содержащим приложением, используя NUserDefaults, но с помощью этого нового метода:
[[NSUserDefaults alloc] initWithSuiteName:@"<app group identifier>"];
чтение/запись... и синхронизация:
[myDefaultsObj synchronize];
а теперь к сути:
используйте схемы URL-адресов группы приложений, чтобы проверить, что вы хотите:
- (void)openURL:(NSURL *)URL completionHandler:(void (^)(BOOL success))completionHandler
- URL - The URL to open.
- completeHandler — блок, который вызывается при открытии URL-адреса.
- этот параметр - success - является логическим значением, указывающим, было ли открытие успешным.
Удачи!!!
person
nurnachman
schedule
29.06.2014
Метод (void)openURL:(NSURL *)URL completeHandler:(void (^)(BOOL Success))completionHandler доступен только в расширении приложения, я хочу определить, включено РАСШИРЕНИЕ ПРИЛОЖЕНИЯ или нет в СОДЕРЖАЩЕМ ПРИЛОЖЕНИИ.
- person moligaloo; 03.07.2014
[NSExtensionContext openURL:completionHandler:]
всегда будет давать сбой для расширений, отличных от расширений «Сегодня».
- person user102008; 30.08.2014