iOS 9 Safari対応アプリケーションジャンプスキームの探索
多くのウェブ開発をしている人は、リンクやボタンをクリックするときに、アプリケーションがインストールされている場合は、そのアプリケーションで開く必要があります.インストールされていない場合は、iOSジャンプApp Storeでダウンロードし、Androidで直接apkパッケージをダウンロードします.
日報を読むとき、これに長い時間を費やした.しかしiOS 9が発表された後、案はまた失効し、私を何時間も振り回した.
まず科学普及をして、ブラウザはアプリケーションがインストールされているかどうか分かりません.
アプリケーションは、1つ(または複数)のカスタムURL schemeを自分で開くことができるように設定することができます.例えば、Twitterは「twitter://」を開くことができると宣言します.
iOSアプリケーションではUIApplicationのcanOpenUrlメソッドで対応するURLが開くかどうかを検出できます.「twitter://」がオンになれば、Twitterアプリがインストールされていることになります.UIApplicationのopenURLメソッドで、対応するアプリケーションにジャンプできます.Androidでも似たようなやり方です.
次にブラウザがどのように処理すべきかを見てみましょう.
iOS 8以降のバージョンでは、SafariはカスタムURL schemeを開こうとすると、自動的に対応するアプリケーションで開きます.
開くには2つの方法があります.直接ジャンプ:例えばリンクをクリックし、windowを変更する.locationなど. iframeジャンプ:bodyにiframeを追加し、そのsrcをジャンプするアドレスに指定します.
次の方法では、ページの内容が新しいページになるなど、ページが表示される変化は起こりません.ブラウザの履歴の変化は起こりません.
日報を読むとき、これに長い時間を費やした.しかしiOS 9が発表された後、案はまた失効し、私を何時間も振り回した.
まず科学普及をして、ブラウザはアプリケーションがインストールされているかどうか分かりません.
アプリケーションは、1つ(または複数)のカスタムURL schemeを自分で開くことができるように設定することができます.例えば、Twitterは「twitter://」を開くことができると宣言します.
iOSアプリケーションではUIApplicationのcanOpenUrlメソッドで対応するURLが開くかどうかを検出できます.「twitter://」がオンになれば、Twitterアプリがインストールされていることになります.UIApplicationのopenURLメソッドで、対応するアプリケーションにジャンプできます.Androidでも似たようなやり方です.
次にブラウザがどのように処理すべきかを見てみましょう.
iOS 8以降のバージョンでは、SafariはカスタムURL schemeを開こうとすると、自動的に対応するアプリケーションで開きます.
開くには2つの方法があります.
次の方法では、ページの内容が新しいページになるなど、ページが表示される変化は起こりません.ブラウザの履歴の変化は起こりません.
<a href=" "> app</a>
<script>
$('a').click(function() {
var ifr = document.createElement('iframe');
ifr.src = ' URL scheme';
ifr.style.display = 'none';
document.body.appendChild(ifr);
setTimeout(function(){
document.body.removeChild(ifr);
}, 3000);
});
</script>
a , URL scheme。 , ; , href , 。
WebView , , :
$('a').click(function() {
location.href = ' URL scheme';
t = Date.now();
setTimeout(function(){
if (Date.now() - t < 1100) {
location.href = 'Android ';
}
}, 1000);
return false;
}
URL scheme, ( href )。 , , 1100 , app ( app ), ; 1100 , , 。
iOS 9 ,iframe , 。
Android , URL scheme , , xx 。 , , App Store。
, URL scheme , , , , :
$('a').click(function() {
location.href = ' URL scheme';
location.href = ' ';
location.reload();
}
, HTML , JavaScript 2 App Store。 HTTP Location App Store, App Store, 。
, ; , App Store 。
:
$('a').click(function() {
location.href = ' URL scheme';
setTimeout(function() {
location.href = ' ';
}, 250);
setTimeout(function() {
location.reload();
}, 1000);
}
, , 。 , 。 ,reload App Store 。
, , Safari , 。 :
setTimeout(function() {history.back()}, 2000);
2 , , 。
,iOS 9 http scheme, , 。