iTunes、App StoreへのリンクがSafariで開けないとき
iTunes(App Store)へのリンクを一括管理したいからリダイレクトさせてるんだけど
iPhoneのSafariからだと開けないなんてことがあります。aタグにtarget=”_blank”を設定してるとダメみたい。
じゃぁ外せばいいじゃん
と思われるかもですけど、
「はずすとサイトから離脱しちゃうじゃまいか」とか
「呪われているので外せません」的な理由があってはずせなかったり。
例としてかみあぷのWebサイト(http://www.appps.jp/)のリンクを見てみましょう。
マンガボックスのところのボタンとアイコンの2つにiTunesへリダイレクトするリンクがついているのですが、
アイコンの方にはtarget=”_blank”が入っています。ですのでSafariでアイコンの方をタップすると、
ガショウィーン、サッ、ピタッと真っ白なページで止まってしまいます。
これはくまったくまった。売り上げにも影響しそうですね。
さてこれを半ば強引に解決する方法をさきほど発見しました。
独自にリダイレクトしている方用とbitlyなどの短縮URLを使ってる方用のがあります。
自分でリダイレクトしている場合の解決方法
PHPだったら、
header(“Location: https://itunes.apple.com/jp/hoge/id00000?mt=8&uo;=4&at;=XXXXX”);
みたいなことをやってると思うのでそのあとにJavaScript
function sleep(time) {
var t1 = new Date().getTime();
var t2 = new Date().getTime();
while(t2 < t1 + time) {
t2 = new Date().getTime();
}
return;
}
sleep(500);
を出力します。PHPだとこんな感じ
header(“Location: https://itunes.apple.com/jp/hoge/id00000?mt=8&uo;=4&at;=XXXXX”);
echo ‘<script>function sleep(time) {var t1 = new Date().getTime();var t2 = new Date().getTime();while (t2 < t1 + time) {t2 = new Date().getTime();}return;}sleep(500);</script>’;
OSを判定してiOSだけのときに出すと良いですね。
何をしているかというと0.5秒スレッドを停止させています。sleepって奴です。
新しくページを開いたあとにスレッドを少し停止させるとちゃんとiTunes、App Storeへ遷移するのです。
なぜかって?
知らないよーん。
さて次
短縮URLサービス使っているのでサーバーサイドいじれない場合の解決方法
最初にあげたかみあぷの例ですね。
aタグの中にonclickでこんなJavaScriptをしかけましょう。
<a href=”http://bit.ly/hoge” target=”_blank” onclick=”setTimeout(function(){ sleep(500); }, 100)”>App Storeへ!</a>
sleepは先ほど用意したものです。リンクをタップした後、
setTimeoutで0.1秒遅らせてから0.5秒スリープさせます。こうするとちゃんと遷移します。
なぜかって?
知らないよーん。
さぁこれでかみあぷもほんの少し売り上げが上がるはず。
お礼にあっきぃの作ったiPhoneアプリを取り上げてくださいな〜。
ではでは♪
※ご利用は自己責任でねっ