0
1

ディープリンク・ユニバーサルリンク・アプリリンクの話

Posted at

はじめに

あるURLにアクセスした時、スマホに指定のアプリがインストールされていればそれを起動し、未インストールでさればストアを表示したい。

ユニバーサルリンクでアプリ未インストールだとストア表示してくれる、みたいなことをいくつか見かけたので調べた。

ディープリンク、ユニバーサルリンク、アプリリンク

いずれもURLっぽいもので、対応したアプリがインストールされていると、そのアプリが起動する。

ディープリンクの中に、
・カスタムURLスキーム
・ユニバーサルリンク
・アプリリンク
がある。

  • カスタムURLスキーム

URLの先頭部分(httpやftpのところ)をアプリ独自に定義したもの。
例:Googleマップ comgooglemaps:

  • ユニバーサルリンク と アプリリンク

iOSとAndroidでの呼び名が違うだけで同じもの。
URLと同じ形式なので、対応するアプリがインストールされていないと普通にWebページが表示される。

ただし、これらだけではストアの表示は行わない。

しかし、ユニバーサルリンクとアプリリンクは、表記がWebページと同じURLのため、対応するアプリが入っていない場合にWebサイトを表示する。(通常のWeb表示が行われる)

このときWebページ側でストアに遷移するような細工を行うことで「未インストール時はストア表示」を実現できる。
同一のURLでAndroid/iOSそれぞれのストアを表示出来るのも、Webページ側の細工によるもの。

  • その細工とは

単に UserAgent による振り分けと、OSに応じたリダイレクトをするだけ。

一連の流れ

Webページやメールに記載した ユニバーサルリンク(アプリリンク) をタップする。(A,B,Cに分岐)

(A)
対象のアプリがインストールされている場合、該当のアプリが起動する

(B)
対象のアプリがインストールされていない場合、ブラウザがWebページにアクセスする

サーバ側でUserAgentによりiOS用/Android用 それぞれのアプリストアのURLへリダイレクトする

ストアアプリのユニバーサルリンク(アプリリンク)が反応し、該当アプリのストアページが表示される

(C)
PCによるアクセスの場合、普通にWebページを表示する

※ただし、一部のアプリ内ブラウザではユニバーサルリンク(アプリリンク)が機能せず、Webページが表示されることがある

カスタムURLスキームでストア表示を行うには

呼び出し側のアプリで、カスタムURLスキームに反応したらそのままアプリが起動。
何も起きなかったら別途用意したURLに遷移させる、という動きを作る。

.htaccessでUserAgentによる振り分け

.htaccess

# iPhone
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteRule ^$ /ios.html [R]

# iPad
RewriteCond %{HTTP_USER_AGENT} iPad
RewriteRule ^$ /ios.html [R]

# Android
RewriteCond %{HTTP_USER_AGENT} Android
RewriteRule ^$ /android.html [R]

ios用

<meta http-equiv="refresh" content="0;url='https://apps.apple.com/jp/app/id??????????'" />

android用

<meta http-equiv="refresh" content="0;url='https://play.google.com/store/apps/details?id=xxx.xxxx.xxxx.xxxxxx'" />

以上

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1