Открыть схему URL из расширения iOS

У меня есть этот код, который возвращает success = NO

[self.extensionContext openURL:[NSURL URLWithString:@"URLApp://"] completionHandler:^(BOOL success) {

     [self.extensionContext completeRequestReturningItems:nil completionHandler:nil];

 }];

Итак, и я не могу открыть содержащее приложение из моего расширения общего доступа, когда я его отлаживаю.

Я настроил основную цель содержащегося приложения следующим образом:

введите здесь описание изображения

Я протестировал открытый URLApp:// из сафари, и он у меня работает.

Я также использовал несколько примеров, предоставленных здесь чтобы понять, как открыть содержащее приложение, используя схему URL.


person Matrosov Alexander    schedule 15.04.2015    source источник
comment
Возможно связанные вопросы и ответы: openURL из расширения приложения.   -  person jweyrich    schedule 15.04.2015
comment
Вы используете URL только со схемой. Пробовали ли вы использовать более действительный URL? нравится [NSURL URLWithString:@"URLApp://openApp"]   -  person Marc-Alexandre Bérubé    schedule 15.04.2015
comment
@Marc-AlexandreBérubé, я ответил на свой комментарий, что вы думаете. меня устраивает.   -  person Matrosov Alexander    schedule 15.04.2015
comment
Этот метод не работает, потому что он не работает в расширениях общего доступа. В документации к этому методу говорится: В iOS 8 этот метод поддерживает только точка расширения Today (используемая для создания виджетов Today).   -  person Tom Harrington    schedule 15.04.2015


Ответы (2)


РЕДАКТИРОВАТЬ: Хорошо, здесь небольшая поправка. Я заработал, поместив кнопку над меткой, как было предложено выше, и следующий код:

 NSURL *url = [NSURL URLWithString:@"floblog://"];
 [self.extensionContext openURL:url completionHandler:nil]; 

Я связал это с событием "Touch Up Inside". Однако это также приводит к запуску приложения, когда пользователь прокручивает представление «Сегодня».

=======================================

Я столкнулся с той же проблемой. Однако похоже, что на данный момент решения нет, поскольку примечания к выпуску для первой бета-версии iOS 8 упоминаются:

Известные проблемы: openURL не работает из расширения.

Так что, я думаю, нам, по крайней мере, придется подождать до бета-версии 2.

person Rahul Mayani    schedule 15.04.2015
comment
Мы уже давно прошли iOS 8.0 Beta 2. На момент написания этого комментария последняя версия iOS — 8.3. Но я думаю, что ограничение (будь то проблема или дизайн) все еще остается - хотя не проверял. - person jweyrich; 15.04.2015
comment
@jweyrich, я ответил на свой вопрос. что ты думаешь? - person Matrosov Alexander; 15.04.2015
comment
@MatrosovAlexander это решает твою проблему? Если это так, вы можете принять свой собственный ответ. Я также рекомендую проголосовать за исходный ответ, который вы использовали в качестве ссылки. Парень тоже заслуживает поощрения :-) - person jweyrich; 15.04.2015

Я нашел этот ответ здесь от Хулио Бейлона:

UIWebView * webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
NSString *urlString = @"URLApp://";
NSString * content = [NSString stringWithFormat : @"<head><meta http-equiv='refresh' content='0; URL=%@'></head>", urlString];
[webView loadHTMLString:content baseURL:nil];
[self.view addSubview:webView];
[webView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:2.0];
person Matrosov Alexander    schedule 15.04.2015
comment
Это действительно работает для вас? Этому ответу несколько месяцев, и это более свежий вопрос предполагают, что это не работает в более новых версиях iOS. - person Tom Harrington; 15.04.2015
comment
@TomHarrington, хм, боже мой, но какое может быть решение? это не так хорошо, поэтому, если у меня нет настроенной учетной записи, я могу использовать расширение общего доступа для отправки данных на сервер, поэтому я хочу сказать пользователю - откройте приложение для входа в систему. есть ли у вас какие-либо мысли, как предоставить открытый функция приложения? - person Matrosov Alexander; 15.04.2015
comment
Вы не знаете. В вопросе, на который вы ссылаетесь, человек, написавший принятый ответ, является одним из инженеров Apple, разрабатывавших расширения приложений. Apple не хочет, чтобы это работало таким образом, и закрывает все обходные пути, которые люди находят. Сообщите об ошибке в Apple и надейтесь, что они исправят ее. - person Tom Harrington; 15.04.2015