Есть ли способ проверить iOS, чтобы узнать, было ли установлено и запущено другое приложение? Если память мне помогает, это было невозможно в ранних версиях, но было ли это изменено?
Определите, существует ли приложение и запускает это приложение в iOS
Ответ 1
Полезно, но сложно.
Запуск установленных приложений, таких как приложения FB или Twitter, выполняется с использованием схемы пользовательских URL-адресов. Они могут использоваться как в других приложениях, так и на веб-сайтах.
Вот статья о том, как это сделать с вашим собственным приложением.
Увидеть, есть ли URL-адрес, может быть сложным. Хорошим примером приложения, которое обнаруживает установленные приложения, является Boxcar. Дело здесь в том, что Boxcar имеет расширенные знания пользовательских URL. Я честно (99%) уверен, что существует canOpenURL:
, поэтому знание пользовательской схемы приложения, которое вы хотите настроить заблаговременно, делает это простым в реализации.
Ниже приведен неполный список более популярного URL-адреса, который вы можете проверить.
Но если вы хотите сканировать приложения и выводить их URL, это невозможно сделать на устройстве, отличном от JB.
Здесь сообщение в блоге, рассказывающее о том, как люди в Bump справились с этой проблемой.
Ответ 2
Существует script, как показано ниже.
<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>
Вызвать этот script из Интернета (<a href="#" onclick="startMyApp()">Try to start MyApp</a>
), вы можете определить, установлено ли на вашем устройстве ваше приложение со схемой "yourAppScheme" или нет.
Приложение запустится, если оно установлено на устройстве, и в нем зарегистрировано "yourAppScheme". Если приложение не установлено, вы можете предложить пользователю установить это приложение из iTunes.
Ответ 3
Чтобы проверить, установлено ли приложение (например, Clear):
BOOL installed = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"clearapp://"]];
Чтобы открыть это приложение:
BOOL success = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"clearapp://"]];
Ответ 4
Скрывает сообщение об ошибке, если приложение не установлено
В Branch мы используем форму кода ниже - обратите внимание, что 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, отправленного с запросом.
Это позволяет избежать уродливого перенаправления, но требует больше работы.
Ответ 5
Насколько я понимаю, из-за проблем с конфиденциальностью вы не видите, установлено ли приложение на устройстве. Путь вокруг этого - попытаться запустить приложение, и если он не запустится, чтобы пользователь ударил обратно назад. Чтобы предотвратить возникновение ошибки в мобильном сафари, я обнаружил, что ее размещение в 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");
Ответ 6
Я боролся с этим недавно, и вот решение, которое я придумал. Обратите внимание, что до сих пор нет уверенного способа определить, было ли приложение запущено или нет.
Я обслуживаю страницу с моего сервера, которая перенаправляет на конкретный iPhone вариант при обнаружении User-Agent. Ссылки на эту страницу могут быть доступны только по электронной почте /SMS или Facebook.
Страница отображает минимальную версию ссылочного документа, но затем автоматически пытается открыть приложение сразу после его загрузки, используя скрытый <iframe> (AJAX всегда терпит неудачу в этой ситуации - вы не можете использовать jQuery или XMLHttpRequest для этого).
Если URL-схема зарегистрирована, приложение откроется, и пользователь сможет сделать все, что им нужно. В любом случае на странице отображается такое сообщение внизу: "Был ли запуск приложения? Если нет, вы, вероятно, еще не установили его..." со ссылкой на магазин.