Продолжаю тему URL-схем, о которы рассказывалось в первой части. В прошлой части я закончил на том, что приложения могут регистрировать свои URL схемы и могут быть вызваны другими приложениями.

Приступим сразу к делу. Создадим пустой проект (Empty application) в XCode и назовем его «URLschemes». Откроем свойства Target и перейдем в раздел Info, раскроем ветку URL Types.

URL-схемы в iOS, часть вторая

Добавим поддержку новой схемы. Для этого нажмем кнопку «Add» в правом нижнем углу. Выберем «Add URL Type».

URL-схемы в iOS, часть вторая

Заполните поля так же как и на скриншоте. Таким образом мы реализовали схему «myapp». Теперь нужно добавить код в приложение, который будет вызываться при запуске приложения через URL-схему.

Откройте класс, который реализует UIApplicationDelegate (чаще всего AppDelegate) и добавьте метод:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

Как видим, в этом методе мы должны вернуть YES или NO, в зависимости от того можем ли в данный момент приложение обработать запрос.

Сделаем этот метод таким:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSString* message = [NSString stringWithFormat:@"%@ | %@ | %@", url, sourceApplication, annotation];

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Application" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; [alert release];

return YES; }

При вызове этого приложения через URL-схему приложение будет показывать параметры вызова. Запустите приложение (работает не только на устройстве, но и на симуляторе). Вы увидите белый экран. Сверните приложение. Запустите Safari и введите в адресной строке — myapp://someurl

URL-схемы в iOS, часть вторая

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

Вызывать наше приложение может не только Safari. Можно сделать второе приложение, которое будет вызывать наше через код:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"myapp://123123123"]];

А так же мы можем проверить, установлено ли наше приложение:

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"myapp://123123123"]];

Итак, еще один пункт из обещанного (Как проверить, установлено ли другое приложение на устройстве?) нам стал известен.

Подитожим. Мы можем добавить поддержку схем в свое приложение. Другие приложения могут проверять, установлено ли наше приложение и вызывать его. Для этого они должны знать URL-схему, которую реализует наше приложение.

Что будет, если несколько приложений на устройстве поддерживают одну и ту же схему?

На этот вопрос никто не знает ответ. Система не гарантирует ни порядка вызова, ни всегда вызывать одно и тоже приложение. Один словом — как повезет.

На этом все. Будем ждать третьей части, в которой будет еще интереснее.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш адрес email не будет опубликован.