在我的iPhone上,我剛剛注意到,如果我使用Google搜索(在移動Safari中)並在quora.com上選擇結果,結果頁面會在手機上啓動本機Quora應用程序。如何從移動Safari重定向到本機iOS應用程序(如Quora)?
這是如何完成的?具體而言,它是檢測用戶代理和使用iOS URL方案嗎?它可以告訴本機應用程序是否安裝和/或重定向到應用程序商店?
在我的iPhone上,我剛剛注意到,如果我使用Google搜索(在移動Safari中)並在quora.com上選擇結果,結果頁面會在手機上啓動本機Quora應用程序。如何從移動Safari重定向到本機iOS應用程序(如Quora)?
這是如何完成的?具體而言,它是檢測用戶代理和使用iOS URL方案嗎?它可以告訴本機應用程序是否安裝和/或重定向到應用程序商店?
你可以做觸發使用custom URL scheme,通過與iOS的運行你的應用程序註冊啓動您的應用程序。然後在您的網站上編寫代碼來檢測傳入的用戶代理,如果檢測到iOS,則生成您的自定義URL而不是常規http。
我重新發佈一個答案,我自己有關(但最初的Ruby-on-Rails的特定的)問題在這裏:Rails: redirect_to 'myapp://' to call iOS app from mobile safari
您可以使用JavaScript重定向window.location
。
示例代碼:
<html><head>
<script type="text/javascript">
var userAgent = window.navigator.userAgent;
if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) {
window.location = "myiosapp://"
}
</script>
</head>
<body>
Some html page
</body>
</html>
JS代碼的只是一個小的改進,如果沒有安裝的應用程序,它會向用戶發送到iTunes商店)
<script type="text/javascript">
// detect if safari mobile
function isMobileSafari() {
return navigator.userAgent.match(/(iPod|iPhone|iPad)/) && navigator.userAgent.match(/AppleWebKit/)
}
//Launch the element in your app if it's already installed on the phone
function LaunchApp(){
window.open("Myapp://TheElementThatIWantToSend","_self");
};
if (isMobileSafari()){
// To avoid the "protocol not supported" alert, fail must open itunes store to dl the app, add a link to your app on the store
var appstorefail = "https://itunes.apple.com/app/Myapp";
var loadedAt = +new Date;
setTimeout(
function(){
if (+new Date - loadedAt < 2000){
window.location = appstorefail;
}
}
,100);
LaunchApp()
}
</script>
那麼,會發生什麼如果他們沒有安裝應用程序? – Callmeed 2012-03-13 19:18:26
好問題,因爲沒有一個標準的處理方法。但是這裏(http://stackoverflow.com/questions/1108693/is-it-possible-to-register-a-httpdomain-based-url-scheme-for-iphone-apps-like/1109200#1109200)是本網站的另一位用戶發佈的體面解決方法。 – Perception 2012-03-13 19:56:14
解決方法是檢測您的應用程序安裝時是否沒有錯誤消息? – kkurni 2014-01-29 06:09:08