NSExtensionContext openURL не работает

Я пытаюсь запустить приложение-контейнер из расширения. (Расширение действия) Приложение-контейнер имеет рабочую схему URL-адресов (пример: //), и я могу проверить это, перейдя по этому URL-адресу в Safari.

Когда я пытаюсь использовать -[NSExtensionContext openURL:completionHandler:] для запуска приложения-контейнера, я получаю неудачный обратный вызов, и ничего не происходит.

Изменения iOS 8 Beta 2 говорят, что метод openURL теперь должен работать, но это все еще ошибка или я делаю что-то не так?


person Mert Dümenci    schedule 02.07.2014    source источник


Ответы (4)


У меня это сработало в сегодняшнем расширении, используя этот код:

NSExtensionContext *myExtension=[self extensionContext];
[myExtension openURL:[NSURL URLWithString:@"http://google.com"] completionHandler:nil];

Однако это может не работать в расширениях действий. Из документация:

Каждая точка расширения определяет, поддерживать ли этот метод или при каких условиях поддерживать этот метод. В iOS 8.0 этот метод поддерживает только точка расширения «Сегодня».

person jk9357    schedule 05.07.2014

Мое решение создает UIWebView и загружает запрос с URL-адресом в нем.

person nurnachman    schedule 14.07.2014

Если вы используете символ Юникода, вы должны преобразовать его в строку utf8.

NSString* toUtf8= [yourString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSString *urlString = [NSString stringWithFormat:@"openMap://?lat=%f&lon=%f&%@",[self.koordX floatValue],[self.koordY floatValue],toUtf8];

[self.extensionContext openURL:[NSURL URLWithString:urlString]  completionHandler:nil];
person erdikanik    schedule 01.12.2014

https://developer.apple.com/library/prerelease/ios/documentation/Foundation/Reference/NSExtensionContext_Class/index.html#//apple_ref/occ/instm/NSExtensionContext/openURL:completionHandler:

ВАЖНО! Apple разрешает любому виджету «Сегодня» использовать метод openURL:completionHandler: для открытия собственного приложения, содержащего этот виджет.

Если вы используете этот метод для открытия других приложений из виджета «Сегодня», ваша отправка в App Store может потребовать дополнительной проверки, чтобы убедиться в соответствии назначению виджетов «Сегодня».

Чтобы узнать больше, прочтите Руководство по проверке App Store и Руководство по человеческому интерфейсу iOS, ссылки на которые можно найти на странице поддержки проверки приложений Apple.

person HuyLe    schedule 08.11.2015