Я думаю, что для большинства хабралюдей не секрет, что каждое приложение может иметь свою url схему, которая позволит другим приложениям взаимодействовать с вашим.
Я хочу рассказать новичкам то, как это работает, а профессионалам — почему это нужно делать.
Добро пожаловать под кат.
Приложение, которое использует чужую схему, может использовать подобный код:
Приложение, которое является исполняющим схему:
Кстати, может не все знают, что у Apple есть свои кастомные схемы для нескольких приложений:
Некоторое время назад я занимался разработкой очень узконаправленной программы для айфона / айпада, которая позволяет управлять хостингом VPS. И я подумал, а что если бы у меня была возможность дать юзеру одним кликом перейти в iSSH или в Coda, чтобы он смог с минимальным количеством собственных движений подключиться к серверу по SSH.
Я пошел искать, но, к сожалению, не нашел их URL схем. На днях, читая хабр, я увидел пост, где человек писал о принципе работе testflight, он сослался на сайт handleopenurl.com, где каждый разработчик может добавить свое приложение и его url схему. Хотя, там пока около 400 приложений, но представьте, что может дать развитие этого или подобного ему сервиса в очень больших масштабах.
Например, чтобы твитбот давал вам выбор, открыть ссылку в Safari или в Chrome, а может в iCab?
Я считаю, что будущее именно за интеграцией между приложениями. В этом случае продажи одного могут стимулировать продажи другого. Например, чтобы добавить возможность из моего приложения соединиться по SSH с сервером, нужно всего 20-30 минут времени (я таки нашел схему iSSH), но приложение iSSH стоит денег. А теперь представьте, что разработчики начнут размещать баннеры в своих приложениях, где будет написано, что всего за n долларов пользователь может получить дополнительный функционал в другом приложении, но оно будет интегрировано с тем, которое он сейчас использует.
Если это действительно нужно человеку, то он пойдет и купит это приложение. Например, в моем случае, iSSH.
В связи с этим я предлагаю всем разработчикам, которые это читают, не лениться, а делать в своих приложениях собственные схемы URL и публиковать их на handleopenurl.com (хоть сервис не идеален, но другого я не нашел). Благо, что это занимает всего несколько часов.
Я хочу рассказать новичкам то, как это работает, а профессионалам — почему это нужно делать.
Добро пожаловать под кат.
Как это работает
Приложение, которое использует чужую схему, может использовать подобный код:
NSURL *url = [NSURL urlWithString:@"myScheme://..."];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
} else {
//Приложение с нужной схемой не установлено
}
Приложение, которое является исполняющим схему:
- В ..-info.plist нужно добавить вашу схему:
- И добавить обработку запуска через схему в этом методе:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { // Ваш код обработки }
Кстати, может не все знают, что у Apple есть свои кастомные схемы для нескольких приложений:
- http для Safari, что логично, ведь это браузер по умолчанию
- tel для того, чтобы позвонить пользователю с указанным номером
- mailto для отправки имейлов из стандартной почты (а что, если бы sparrow так умел)
- sms для отправки смс
Зачем это нужно
Некоторое время назад я занимался разработкой очень узконаправленной программы для айфона / айпада, которая позволяет управлять хостингом VPS. И я подумал, а что если бы у меня была возможность дать юзеру одним кликом перейти в iSSH или в Coda, чтобы он смог с минимальным количеством собственных движений подключиться к серверу по SSH.
Я пошел искать, но, к сожалению, не нашел их URL схем. На днях, читая хабр, я увидел пост, где человек писал о принципе работе testflight, он сослался на сайт handleopenurl.com, где каждый разработчик может добавить свое приложение и его url схему. Хотя, там пока около 400 приложений, но представьте, что может дать развитие этого или подобного ему сервиса в очень больших масштабах.
Например, чтобы твитбот давал вам выбор, открыть ссылку в Safari или в Chrome, а может в iCab?
Я считаю, что будущее именно за интеграцией между приложениями. В этом случае продажи одного могут стимулировать продажи другого. Например, чтобы добавить возможность из моего приложения соединиться по SSH с сервером, нужно всего 20-30 минут времени (я таки нашел схему iSSH), но приложение iSSH стоит денег. А теперь представьте, что разработчики начнут размещать баннеры в своих приложениях, где будет написано, что всего за n долларов пользователь может получить дополнительный функционал в другом приложении, но оно будет интегрировано с тем, которое он сейчас использует.
Если это действительно нужно человеку, то он пойдет и купит это приложение. Например, в моем случае, iSSH.
В связи с этим я предлагаю всем разработчикам, которые это читают, не лениться, а делать в своих приложениях собственные схемы URL и публиковать их на handleopenurl.com (хоть сервис не идеален, но другого я не нашел). Благо, что это занимает всего несколько часов.