Перенаправить на приложение, если оно установлено, иначе в App Store

Я знаю, что можно напрямую связать приложение с iOS, зарегистрировав пользовательскую схему (например, так: //), а также можно связать приложение с Appunes через itunes.

Во многих случаях идеальным streamом является предоставление ссылки, которая перенаправляет приложение, если оно установлено, и в магазин, если нет. Возможно ли это, и если да, то как?

Добавленный для ясности сценарий – я открываю ссылку (http) из электронной почты на моем iphone, которая приглашает меня присоединиться к группе в приложении. Если у пользователя установлено приложение на этом устройстве, оно должно открыться, иначе ссылка http должна быть перенаправлена ​​на itunes.

Невозможно проверить это. Тем не менее, есть хороший обходной путь.

Идея в основном такова:

  1. При первом открытии приложения вы открываете мобильное safari из своего приложения на предопределенный URL-адрес на своем сервере
  2. На этом URL-адресе вы настроили куки-файл, например appInstalled для мобильных safari пользователей
  3. Затем вы удаляете пользователя обратно в свое приложение с помощью вашей зарегистрированной схемы (то же, что и FB с SSO)
  4. Все ваши ссылки по электронной почте указывают на ваш сайт, но на веб-сайте вы проверяете, является ли браузер мобильным Safari, и если установлен файл cookie appInstalled
  5. Если браузер не является мобильным Safari или cookie не найден, вы перенаправляетесь в AppStore или остаетесь на своей веб-странице.
  6. Если условия №4 верны, вы перенаправляете пользователя в свое приложение с зарегистрированной схемой
  7. Если приложение было удалено пользователем, поэтому схема пользовательских URL-адресов завершилась неудачно, у вас есть отказоустойчивая переадресация в appstore

Два последних шага объясняются на этом посту SO

Я думаю, что более простым ответом было бы создание страницы на вашем сервере со следующим javascript:

(function() { var app = { launchApp: function() { window.location.replace("myapp://"); this.timer = setTimeout(this.openWebApp, 1000); }, openWebApp: function() { window.location.replace("http://itunesstorelink/"); } }; app.launchApp(); })(); 

Это в основном пытается перенаправить ваше приложение и устанавливает тайм-аут для перенаправления на магазин приложений, если он не работает.

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

Если у вас есть веб-страница, на которую вы ссылаетесь, из электронной почты с веб-страницей, содержащей iframe с параметром src настроенным на пользовательскую схему для вашего приложения, iOS автоматически перенаправляется на это место в приложении. Если приложение не установлено, ничего не произойдет. Это позволяет вам глубже входить в приложение, если оно установлено, или перенаправить в App Store, если он не установлен.

Например, если у вас установлено приложение twitter и перейдите на веб-страницу, содержащую следующую разметку, вы сразу же будете перенаправлены в приложение. Если у вас не было установленного приложения Twitter, вы увидите текст «Приложение Twitter не установлено».

    iOS Automatic Deep Linking    

The Twitter App is not installed

Ниже приведен более подробный пример перенаправления в App Store, если приложение не установлено:

    iOS Automatic Deep Linking       

Website content.

Да, это довольно легко. Для этого требуется приложение, которое вы хотите открыть, чтобы иметь URL-схему, объявленную в plist:

 //if you can open your app if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"yourapp://"]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"yourapp://"]]; } else { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"ituneappstorelink"]]; } 

«Smart App Banners» – не уверены, когда они появятся, но после поиска этого сообщения, ищущего то же, а затем Smart App Banners, это продолжение.

Баннеры смарт-приложений – это однострочный метатег html в заголовке каждой страницы, которую вы хотите предложить своему приложению через веб-интерфейс:

  

который показывает, что значок в верхней части страницы и «Открыть эту страницу в» с помощью приложения или маршрутизации в App Store.

введите описание изображения здесь

Метаданные для этой страницы на iPhone выглядят следующим образом (анонимно, конечно):

  

 Документация разработчика Apple – продвижение приложений с помощью смарт-баннеров приложений

  • HTTP-redirect: 301 (постоянный) против 302 (временный)
  • Является ли redirect 302 относительным URL действительным или недействительным?
  • Как перенаправить на предыдущую страницу в Ruby On Rails?
  • Будет ли redirect 302 поддерживать строку-референт?
  • Как перенаправить все HTTP-запросы на HTTPS
  • Используя JSF 2.0 / Facelets, есть ли способ подключить глобальный прослушиватель ко всем вызовам AJAX?
  • Как я могу использовать файл в команде и перенаправить вывод в тот же файл без его усечения?
  • Gdb печатать в файл вместо stdout
  • Принудительное HTTPS для определенного URL-адреса
  • Heroku / GoDaddy: отправить голый домен на www
  • Лучшая практика: 301 Перенаправление HTTP на HTTPS (стандартный домен)
  • Давайте будем гением компьютера.