iTunes、App StoreへのリンクがSafariで開けないとき
April 10, 2014
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アプリを取り上げてくださいな〜。 […]
View More