アプリがインストールされていないときの処理
URLスキームは便利だけど
アプリがインストールされていないと
エラーになる
エラーはページが存在しませんというもの
このため、アプリがインストールされていないときには
アプリのダウンロードページに遷移するようにする
ちなみに
独自urlスキーム 作成 Android
で調べてみたけど
ソーシャルメディアアプリだけでなく
自作アプリでも、URLスキームの利用は可能
以下は、Twitterアプリがインストールされてないときには
ダウンロードページへ遷移する処理
<a href="twitter-btn">タイムラインの表示</a> <iframe frameborder="1" scrolling="auto" id="twitter-launcher" name="twitter-launcher"></iframe>
でiframeの表示を overflow:hidden;で隠し
そのiframeのsrcでURLスキームリンクを指定する
location.href
ではなく
iframe のsrcなのは
必要なアプリがインストールされていないときにJavascriptで
アプリのダウンロードページへ遷移するため
また iframe の src による画面遷移の場合
親ページのJavascriptが続行して実行される
つまり、アプリがインストールされているなら iframeで処理して
アプリがインストールされていないときには
location.hrefを使い、ダウンロードページへリンクする
Javascriptで
iframe の srcで外部ドメインのサイトを指定しても
セキュリティーにより遷移できない
Androidのブラウザーのときの処理は
if(/(Android)/.test(navigator.userAgent)){ DOWNLOAD_URL=" market://search?q=pname:com.twitter.android"; } $(document).on("pageinit","#top",function(e){ $(this).on("click","#twitter-btn",function(e){ $("#twitter-launcher").attr('src',"twitter://timeline"); setTimeout(function(){ location.href=DOWNLOAD_URL; },100); }); });
market://search?q=pname:com.twitter.android
は
AndroidのTwitterアプリのダウンロードページ
もし、同じように自作アプリでやるなら
そのアプリのダウンロードページのURLにする
$("#twitter-launcher").attr('src',"twitter://timeline");
で、iframeのsrcを追加している
これで、タイムラインを表示
setTimeout(function(){ location.href=DOWNLOAD_URL; },100);
で、タイムアウトしたら
ダウンロードページへリンクするように設定している