Определите, существует ли приложение и запустите его на iOS

Есть ли способ проверить iOS, чтобы увидеть, было ли установлено и запущено другое приложение? Если мне не изменяет память, это было невозможно в ранних версиях, но изменилось ли это?

74 голоса | спросил Rob 21 PMpThu, 21 Apr 2011 19:28:32 +040028Thursday 2011, 19:28:32

6 ответов


0

Выполнимо, но сложно.

Запуск установленных приложений, таких как приложения FB или Twitter, осуществляется с помощью пользовательской схемы URL-адресов. Их можно использовать как в других приложениях, так и на веб-сайтах.

Вот статья о том, как сделать это с помощью собственного приложения .

Проверить наличие URL-адреса может быть сложно. Хорошим примером приложения, которое обнаруживает установленные приложения, является Boxcar . Дело в том, что Boxcar обладает расширенными знаниями о пользовательских URL. Я вполне (на 99%) уверен, что существует canOpenURL:, поэтому, зная пользовательскую схему приложения, на которое вы хотите ориентироваться, нужно заранее время делает это простым для реализации.

Вот неполный список некоторых из наиболее популярных URL, на которые вы можете проверить.

Но если вы хотите сканировать приложения и определять их URL-адреса, этого нельзя сделать на устройстве, отличном от JB.

Вот сообщение в блоге , рассказывающее о том, как ребята из Bump справились с проблемой .

ответил Doug Stephen 21 PMpThu, 21 Apr 2011 19:54:47 +040054Thursday 2011, 19:54:47
0

Существует скрипт, подобный следующему.

 <script type="text/javascript">
function startMyApp()
{
  document.location = 'yourAppScheme://';
  setTimeout( function()
  {
      if( confirm( 'You do not seem to have Your App installed, do you want to go download it now?'))
      {
        document.location = 'http://itunes.apple.com/us/app/yourAppId';
      }
  }, 300);
 }
</script>

Вызвав этот скрипт из Интернета (<a href="#" onclick="startMyApp()">Try to start MyApp</a>), вы можете определить, установлено ли на устройстве ваше приложение со схемой "yourAppScheme" или нет.

Приложение запустится, если оно установлено на устройстве и в нем зарегистрировано «yourAppScheme». Если приложение не установлено, вы можете предложить пользователю установить это приложение из iTunes.

ответил Ievgen 25 +04002011-10-25T12:42:33+04:00312011bEurope/MoscowTue, 25 Oct 2011 12:42:33 +0400 2011, 12:42:33
0

Чтобы проверить, установлено ли приложение (например, Очистить):

BOOL installed = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"clearapp://"]];

Чтобы открыть это приложение:

BOOL success = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"clearapp://"]];
ответил Gavin Hope 20 42014vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2014 10:16:42 +0300 2014, 10:16:42
0

Скрывает сообщение об ошибке, если приложение не установлено

В филиале мы используем приведенную ниже форму кода - обратите внимание, что iframe работает в большем количестве браузеров. Просто замените его в URI вашего приложения и на ссылку в App Store.

<!DOCTYPE html>
<html>
    <body>
        <script type="text/javascript">
            window.onload = function() {
                // Deep link to your app goes here
                document.getElementById("l").src = "my_app://";

                setTimeout(function() {
                    // Link to the App Store should go here -- only fires if deep link fails                
                    window.location = "https://itunes.apple.com/us/app/my.app/id123456789?ls=1&mt=8";
                }, 500);
            };
        </script>
        <iframe id="l" width="1" height="1" style="visibility:hidden"></iframe>
    </body>
</html>

Существует вторая возможность, которая в первую очередь опирается на файлы cookie, и перенаправление JavaScript только в качестве запасного варианта. Вот логика:

Когда пользователь без приложения сначала нажимает на ссылку на ваше приложение, он или она перенаправляются прямо в App Store. Это достигается с помощью ссылки на ваше приложение, которое фактически является динамически генерируемой страницей на ваших серверах с перенаправлением. Вы создаете cookie и регистрируете «цифровой отпечаток» IP-адреса, ОС, версии ОС и т. Д. На своем бэкэнде.

Когда пользователь устанавливает приложение и открывает его, вы собираете и отправляете еще один «цифровой отпечаток» на свой бэкэнд. Теперь ваш бэкэнд знает, что ссылка установлена. При любых последующих посещениях ссылок, связанных с вашим приложением, ваши серверы следят за тем, чтобы динамически генерируемая страница перенаправления приводила к приложению, а не к App Store, на основе файла cookie, отправленного с запросом.

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

ответил st.derrick 21 FebruaryEurope/MoscowbSat, 21 Feb 2015 00:35:48 +0300000000amSat, 21 Feb 2015 00:35:48 +030015 2015, 00:35:48
0

Насколько я понимаю, из-за проблем с конфиденциальностью вы не видите, установлено ли приложение на устройстве. Чтобы обойти это, попробуйте запустить приложение и, если оно не запустится, заставить пользователя нажать альтернативную ссылку. Чтобы предотвратить возникновение ошибки мобильного сафари, я обнаружил, что размещение ее в iframe помогает решить проблему.

Вот фрагмент кода, который я использовал.

<form name="mobileForm" action="mobile_landing.php" method="post">
        <input type="hidden" name="url" value="<?=$web_client_url?>">
        <input type="hidden" name="mobile_app" value="<?=$mobile_app?>">
        <input type="hidden" name="device_os" value="<?=$device_os?>">
    </form>
<script type="text/javascript">
        var device_os = '<? echo $device_os; ?>'; 


        if (device_os == 'ios'){

        var now = new Date().valueOf(); 
        setTimeout(function () { 
            if (new Date().valueOf() - now > 100) 
                return;

        document.forms[0].submit(); }, 5); 


        var redirect = function (location) {
            var iframe = document.createElement('iframe');
            iframe.setAttribute('src', location);
            iframe.setAttribute('width', '1px');
            iframe.setAttribute('height', '1px');
            iframe.setAttribute('position', 'absolute');
            iframe.setAttribute('top', '0');
            iframe.setAttribute('left', '0');
            document.documentElement.appendChild(iframe);
            iframe.parentNode.removeChild(iframe);
            iframe = null;
        };

        setTimeout(function(){
            window.close()
            }, 150 );

        redirect("AppScheme");
ответил Adrian Phan 21 Mayam15 2015, 03:44:44
0

Недавно я боролся с этим, и вот решение, которое я нашел. Обратите внимание, что до сих пор нет надежного способа определить, запущено приложение или нет.

Я открываю страницу со своего сервера, которая перенаправляет на конкретный вариант iPhone при обнаружении User-Agent. Ссылки на эту страницу могут быть переданы только по электронной почте /SMS или Facebook.

На странице отображается минимальная версия ссылочного документа, но затем автоматически пытается открыть приложение, как только оно загружается, используя скрытый <iframe> (AJAX всегда терпит неудачу в этой ситуации - вы не можете использовать jQuery или XMLHttpRequest для этого).

Если схема URL-адреса зарегистрирована, приложение откроется, и пользователь сможет сделать все, что ему нужно. В любом случае, на странице внизу отображается сообщение: «Запустилось ли приложение? Если нет, то, вероятно, вы еще не установили его…» со ссылкой на магазин.

ответил user2117956 15 FebruaryEurope/MoscowbSat, 15 Feb 2014 22:35:58 +0400000000pmSat, 15 Feb 2014 22:35:58 +040014 2014, 22:35:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132