Уверенный это возможно. Это - то, что GObject, делает платформа, на основе которой все из GTK + и GNOME.
UPDATE
Все ссылки не подлежат ремонту в этом ответе 6-летней давности.
Кроме того, я бы больше не делал этого, просто base64
кодирует или отбрасывает небезопасные символы. Пример Python 3:
Установлен
cookie . location
to your-uri: //
(или на стороне сервера перенаправления) your-uri: //
Другой вариант, с которым я играл, но нашел немного неуклюжим, - сделайте следующее в 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://";
Вы не можете, насколько я знаю, сделать так, чтобы вся ОС понимала URL-адрес http:
+ домена. Вы можете регистрировать только новые схемы (я использую x-darkslide:
в моем приложении). Если приложение установлено, Mobile Safari запустит его правильно.
Однако вам придется обрабатывать случай, когда приложение не установлено, с сообщением «Все еще здесь? Щелкните эту ссылку, чтобы загрузить приложение из iTunes». на вашей веб-странице.
Проверьте User-Agent и, если он Mobile Safari, откройте myprotocol: // URL-адрес (попытка) открыть iPhone приложение и откройте Mobile iTunes, чтобы загрузка приложения в случае попытка не удалась
Это кажется мне разумным подходом, но я не думаю, что вы сможете использовать его для открытия мобильных iTunes в качестве второго средства. Я думаю, вам придется выбрать один или другой - либо перенаправить в свое приложение, либо в itunes.
т.е. если вы перенаправляете на myprotocol: //, а приложения нет на телефоне, вы не получите второй шанс перенаправить на itunes.
Возможно, вы сначала могли бы перенаправить на целевую страницу (оптимизированную для iphone) и дать пользователю возможность перейти по ссылке в ваше приложение или в itunes, чтобы получить приложение, если его нет? Но вы будете полагаться на то, что пользователь поступит правильно. (Изменить: хотя вы могли бы установить cookie, чтобы это происходило только в первый раз?)
Это вполне возможно сделать в 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>