Действительно ли возможно зарегистрироваться http+domain-based Схема URL приложений для iPhone, как YouTube и Карты?

Уверенный это возможно. Это - то, что GObject, делает платформа, на основе которой все из GTK + и GNOME.

222
задан User97693321 3 March 2012 в 03:43
поделиться

4 ответа

UPDATE

Все ссылки не подлежат ремонту в этом ответе 6-летней давности.

Кроме того, я бы больше не делал этого, просто base64 кодирует или отбрасывает небезопасные символы. Пример Python 3:

  1. Проверить, является ли пользовательский агент агентом iPhone / iPod Touch.
  2. Проверить приложение Установлен cookie
  3. Если cookie существует и установлен на true, установите окно . location to your-uri: // (или на стороне сервера перенаправления)
  4. Если файл cookie не существует, откройте окно «Знаете ли вы, что в названии вашего сайта есть приложение для iPhone? " модальное окно с кнопками «Да, у меня уже есть», «Нет, но я бы хотел попробовать» и «Оставьте меня в покое».
    1. Кнопка «Да» устанавливает для файла cookie значение true и перенаправляет на your-uri: //
    2. . Кнопка «Нет» перенаправляет на « http://itunes.com/apps/yourappname ", который откроет App Store на устройстве.
    3. Кнопка" Оставить меня "устанавливает для файла cookie значение false и закрывает модальное окно.

Другой вариант, с которым я играл, но нашел немного неуклюжим, - сделайте следующее в Javascript:

setTimeout(function() {
  window.location = "http://itunes.com/apps/yourappname";
}, 25);

// If "custom-uri://" is registered the app will launch immediately and your
// timer won't fire. If it's not set, you'll get an ugly "Cannot Open Page"
// dialogue prior to the App Store application launching
window.location = "custom-uri://";
240
ответ дан 23 November 2019 в 04:02
поделиться

Вы не можете, насколько я знаю, сделать так, чтобы вся ОС понимала URL-адрес http: + домена. Вы можете регистрировать только новые схемы (я использую x-darkslide: в моем приложении). Если приложение установлено, Mobile Safari запустит его правильно.

Однако вам придется обрабатывать случай, когда приложение не установлено, с сообщением «Все еще здесь? Щелкните эту ссылку, чтобы загрузить приложение из iTunes». на вашей веб-странице.

2
ответ дан 23 November 2019 в 04:02
поделиться

Проверьте User-Agent и, если он Mobile Safari, откройте myprotocol: // URL-адрес (попытка) открыть iPhone приложение и откройте Mobile iTunes, чтобы загрузка приложения в случае попытка не удалась

Это кажется мне разумным подходом, но я не думаю, что вы сможете использовать его для открытия мобильных iTunes в качестве второго средства. Я думаю, вам придется выбрать один или другой - либо перенаправить в свое приложение, либо в itunes.

т.е. если вы перенаправляете на myprotocol: //, а приложения нет на телефоне, вы не получите второй шанс перенаправить на itunes.

Возможно, вы сначала могли бы перенаправить на целевую страницу (оптимизированную для iphone) и дать пользователю возможность перейти по ссылке в ваше приложение или в itunes, чтобы получить приложение, если его нет? Но вы будете полагаться на то, что пользователь поступит правильно. (Изменить: хотя вы могли бы установить cookie, чтобы это происходило только в первый раз?)

0
ответ дан 23 November 2019 в 04:02
поделиться

Это вполне возможно сделать в JavaScript, если ваш запасной вариант - еще одно приложение . Основываясь на предложении Натана :

<html>
  <head>
    <meta name="viewport" content="width=device-width" />
  </head>
  <body>

    <h2><a id="applink1" href="fb://profile/116201417">open facebook with fallback to appstore</a></h2>
    <h2><a id="applink2" href="unknown://nowhere">open unknown with fallback to appstore</a></h2>
    <p><i>Only works on iPhone!</i></p>    

  <script type="text/javascript">

// To avoid the "protocol not supported" alert, fail must open another app.
var appstorefail = "itms://itunes.apple.com/us/app/facebook/id284882215?mt=8&uo=6";

function applink(fail){
    return function(){
        var clickedAt = +new Date;
        // During tests on 3g/3gs this timeout fires immediately if less than 500ms.
        setTimeout(function(){
            // To avoid failing on return to MobileSafari, ensure freshness!
            if (+new Date - clickedAt < 2000){
                window.location = fail;
            }
        }, 500);    
    };
}

document.getElementById("applink1").onclick = applink(appstorefail);
document.getElementById("applink2").onclick = applink(appstorefail);

</script>
</body>
</html>

Посмотрите живую демонстрацию здесь .

95
ответ дан 23 November 2019 в 04:02
поделиться
Другие вопросы по тегам:

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