Code

2015年3月29日日曜日

モバイル App 起動とApp Store, Play Store に Redirect する Landing Page

 先週、メールを使って、情報をシェアしたりする機能がうちのアプリに追加されました。メールには HTML リンクがあって、その後ろに token があります。具体的に言うと、もしユーザーが App をすでにインストールしたら、直接アプリを起動します。もしユーザーがアプリをインストールしてなかったら、App Store か Play Store に転送します。
 これを実現するにはメール中のリンクをクリックするとき、 Landing Page をモバイルのブラウザーに開いて、JavaScript で userAgent をチェックして、まず App を立ち上がることを試して、もし起動しなかったら、iOS なら、App Store, Andorid なら Play Sotre を開きます。
 コード:
  isIos = /iP(one|ad|od)/i.test(navigator.userAgent);
  isAndroid = /Android/i.test(navigator.userAgent);
 
  redirectUrl = {
      iOS : {
         app: 'appscheme://path/parameter',
         store: 'https://itunes.com/abc123456'
      },
      android : {
         app: 'appscheme://path/parameter',
         store: 'https://play.google.com/abc124?token=123abc'
      }
  };

  if(isIos || isAndroid) {
      redirect = isIos : redirectUrl.iOS : redirect.android;
      launchTime = +new Date();

      window.location.href = redirect.app;  // You can add any query string here
      setTimeout(function() {
        if((+new Date() - launchTime) < 2000) {
          window.location.href = redirect.store;
        }
      }, 100);
  }

 説明すると、まず iOS か Android かを userAgent をチェックして、そのあと、アプリを起動するのを試します。こちらはアプリ特有の scheme を使って、url を転送するのを試します。もしアプリが起動したら、ブラウザーからアプリに切り替えるので、次の setTimeout の関数は 2 秒ご実行されるはずです。そうすると、store url への転送が実行されないはずです。
 もしアプリが起動されてない場合、 100 msを待ってから、store url への転送が実行されます。
 今後、たぶん widows phone バージョンも追加されるだろう。ただ、原理は同じです。
 それでは。

0 件のコメント:

コメントを投稿