Pull to refresh

Интеграция приложений внутри системы

Reading time 2 min
Views 4.4K
Я думаю, что для большинства хабралюдей не секрет, что каждое приложение может иметь свою url схему, которая позволит другим приложениям взаимодействовать с вашим.



Я хочу рассказать новичкам то, как это работает, а профессионалам — почему это нужно делать.

Добро пожаловать под кат.


Как это работает

Приложение, которое использует чужую схему, может использовать подобный код:
NSURL *url = [NSURL urlWithString:@"myScheme://..."];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
   [[UIApplication sharedApplication] openURL:url];
} else {
   //Приложение с нужной схемой не установлено
}


Приложение, которое является исполняющим схему:
  1. В ..-info.plist нужно добавить вашу схему:
  2. И добавить обработку запуска через схему в этом методе:
    	- (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 (хоть сервис не идеален, но другого я не нашел). Благо, что это занимает всего несколько часов.
Tags:
Hubs:
+3
Comments 6
Comments Comments 6

Articles