Перенаправить обратно в приложение из расширения общего доступа

Можно ли перенаправить пользователя обратно в мое приложение из моего поделиться расширением (после завершения публикации/другого действия)?

Мне не удалось заставить UIApplication.sharedApplication() работать — метод был недоступен.

Любые идеи, возможно ли это / если Apple вообще разрешает это?


person royherma    schedule 10.05.2016    source источник
comment
Какое расширение общего доступа вы используете? Это UIActivityViewController или вы создали свой собственный?   -  person iYoung    schedule 11.05.2016
comment
share extension, как в отдельном таргете — и это Share Extension. Вот ссылка для справки developer.apple.com/ библиотека/ios/документация/Общие/   -  person royherma    schedule 11.05.2016
comment
Возможный дубликат Share Extension для открытия хост-приложения   -  person Bogdan Farca    schedule 09.10.2016


Ответы (2)


На самом деле это возможно, выполнив поиск UIApplication в цепочке респондентов и вызвав для него openURL, как описано в этом ответе: https://stackoverflow.com/a/28037297/554203.

Это код, который работает для XCode 8, Swift 3.0 и iOS10 (опять же, извлеченный из ответа Хулио Бейлона выше):

let url = NSURL(string:urlString)
let context = NSExtensionContext()
context.open(url! as URL, completionHandler: nil)

var responder = self as UIResponder?

while (responder != nil){
    if responder?.responds(to: Selector("openURL:")) == true{
        responder?.perform(Selector("openURL:"), with: url)
    }
    responder = responder!.next
}
person Bogdan Farca    schedule 07.10.2016

Начиная с iOS 9.3, это невозможно для файла Share Extension.

person royherma    schedule 16.05.2016
comment
это должно быть в разделе комментариев, а не в ответе. - person CodeChanger; 05.11.2019