Как я могу определить, установлено ли приложение на устройство Android из веб-страницы? - PullRequest
5 голосов
/ 04 июля 2011

Вот ситуация:

У меня есть веб-страница, на которой необходимо проверить с помощью JavaScript, установлено ли мое приложение на устройстве Android, на котором оно запущено.

Если приложение установлено, на странице будет показана ссылка (с настраиваемым протоколом) для запуска приложения, в противном случае на странице должна отображаться ссылка на андроид маркет.

Я могу управлять ссылками на приложение и на рынок. Единственным оставшимся шагом является обнаружение приложения на устройстве из кода JavaScript (или, возможно, попытка отловить возможную ошибку неподдерживаемого протокола как признак несуществующего приложения).

Когда я

  1. нажмите на веб-ссылку с
  2. мой протокол приложения и
  3. приложение еще не установлено на устройстве

Я вижу, что среда android генерирует ошибку типа «протокол не поддерживается». К сожалению, я не могу зафиксировать эту ошибку в коде JavaScript, чтобы отвлечь пользователя на рынок Android.

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

Есть идеи, как мне этого добиться?

Спасибо за помощь.

Ответы [ 3 ]

3 голосов
/ 04 июля 2011

Не используйте пользовательский протокол.

Вместо этого настройте <intent-filter> на поиск общеизвестного URL (например, укажите схему, хост и путь).Этот URL-адрес должен указывать на страницу, на которой лежат ваши инструкции по загрузке приложения.

Затем, если пользователь щелкнет ссылку на известный URL-адрес из другого места, он запустит ваше приложение, если оно установлено, илиоткроет вашу веб-страницу, если нет.

2 голосов
/ 07 мая 2015

У меня тоже был такой же вопрос, но я решаю его так:

var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1;
if(isAndroid) { // if is android
    // your app address for local
    var ifrSrc = 'intent://example.com#Intent;scheme=my_scheme;action=android.intent.action.VIEW;end';
    var ifr = document.createElement('iframe');
    ifr.src = ifrSrc ;
    ifr.onload = function() { // if app is not installed, then will go this function
        window.location = 'http://your.app_download_page.com';
    };
    ifr.style.display = 'none';
    document.body.appendChild(ifr);

    setTimeout(function(){
        document.body.removeChild(ifr); // remove the iframe element
    }, 1000);
} else { // if is not android
    window.location = 'http://google.com';
}

Надеюсь, что это может помочь кому-то может иметь эту проблему.

0 голосов
/ 29 мая 2013

Вы можете использовать iframe, src url которого является пользовательским протоколом вашего приложения, и в то же время вы можете отображать свою веб-страницу, если пользовательский протокол не обрабатывается.Вы также можете установить для iframe значение invisble, используя frameborder = "0", width и height = 0;

...