Содержание
Думаю, что всем интересно узнавать вещи, которые не лежат на поверхности (или лежат?). Казалось бы, чего только уже не написано про iOS! Но большинство материалов очень схожи и описывают одну и ту же тематику. Очень хочется рассказать о чем-нибудь интересном. Поэтому попытаюсь написать об URL-схемах в iOS. Скорее всего, одной статьей я не ограничусь и придеться делать несколько выпусков. Ну что ж, начнем.
В этой и последющих статьях вы узнаете ответы на вопросы:
- Как вызывать стандартные приложения из своего? (почта, телефон, сообщения, карта, YouTube, iTunes)
- Как передавать данные из одного приложения в другое?
- Как проверить, установлено ли другое приложение на устройстве?
- И много чего другого…
Простое начало
Пожалуй, начнем с простого. Довольно распространенная задача — вызвать браузер Safari из своего приложения, да и мало того что вызвать! Нужно чтобы браузер открыл интересующую нас страницу. Без лишних слов, делается это так:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://idev.by"]];
Что мы сделали в этом примере? Мы «попросили» наше приложение открыть URL. Как система понимает в каким приложением открыть данный URL? Можно подумать, что если мы тут говорим про URL то это обязательно интернет-адрес и система всегда будет вызывать Safari. Убедимся, что это не так. Позвоним по номеру 123-456-789:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];
Что делает этот код? Я думаю вы уже догадались, что он открывает приложение «Телефон» и набирает номер.
Как же система понимает какое приложение открывать?
Рассмотрим как выглядит URL, который мы отправляем в метод openURL::
tel://123456789 и http://idev.by
Разделим эту строку на две части, разделителем будем считать три знака — ://. Становиться ясно, что первая часть (в наших случаях это http или tel) — это название схемы, а вторая часть — какие-либо данные. В первом случае номер телефона, во втором — адрес.
Итак, система анализирует название схемы и вызывает соответствующее приложение передавая ему данные. Значит, система где-то хранит названия схем и соответствующие им приложения!
Сделаем небольшое отступление. Выше я обещал что вы узнаете как вызывать Google Maps, iTunes, Youtube и SMS приложения. Об этом можно почитать тут. Я не стану это описывать в данное статье т.к. принцип для всего одинаковый.
Поддержка URL-схем приложениями
Мы остановились на том, что система где-то хранит названия схем и приложения, которые поддерживают эти схемы. К большой радости iOS позволяет разработчикам добавлять в свои приложения поддержку схем и использовать эти схемы в других приложениях!
Вот наглядный тому пример, вызовем Skype или даже заставим Skype набрать номер телефона:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"skype://123456789"]];
Как видим, принцип один и тот же — изменилась только схема, теперь она называется skype!
Но как быть, если Skype не установлен на телефоне и магическую кнопку «Позвонить через Skype» показывать не нужно, если Skype не установлен? Или выдавать сообщение, что нужно установить Skype? Поддержку системой конкртеной схемы мы можем узнать так:
if ( [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"skype://123456789"]] )
{
// Skype установлен!
}
else
{
// Skype не установлен!
}
Очевидно, что если мы хотим проверить поддержку другой схемы — нам нужно заменить «skype» на название другой схемы.
На этом, пожалуй все. В следующем выпуске вы узнаете как сделать поддержку URL-схем своим приложением, как передавать данные из одного вашего приложения в другое.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: