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


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

6 73

6 ответов:

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

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

вот статья о том, как это сделать с вашим собственным приложением.

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

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

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

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

есть сценарий, как показано ниже.

<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.

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

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

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

BOOL success = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"clearapp://"]];

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

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

<!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>

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

когда пользователь без приложения сначала нажимает на ссылку на ваше приложение, он или она перенаправляется прямо в магазин приложений. Это достигается путем ссылки на ваше приложение, фактически являющееся динамически генерируемой страницей на ваших серверах с перенаправлением. Вы создаете файл cookie и регистрируете "цифровой отпечаток пальца" IP-адреса, ОС, версии ОС и т. д. на backend.

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

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

насколько я понимаю, из-за проблем с конфиденциальностью вы не можете увидеть, установлено ли приложение на устройстве. Способ обойти это-попытаться запустить приложение, и если оно не запускается, чтобы пользователь ударил обратный url-адрес. Чтобы предотвратить ошибку mobile safari, я обнаружил, что размещение ее в 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");

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

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

страница отображает минимальную версию ссылочного документа, но затем автоматически пытается открыть приложение, как только оно загружает, используя скрытый

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