カスタムURLスキームとユニバーサルリンクの違いを理解する
はじめに
ディープリンクとは、モバイルユーザーがURLをクリックした時に、ウェブサイトではなく、アプリを起動してアプリ内の関連ページに遷移させる技術です。
例えば下記のような挙動です
- メールから直接アプリを開く
- ブラウザーでGoogle Mapsを開いた時に「アプリで開く」をクリックしたらアプリが立ち上がり、該当の画面に遷移する
メールやQRコード経由で直接アプリを開く必要があるプロダクトにとってディープリンク機能は特に必要です。
ディープリンクを実装する方法が2つあります。1つ目はカスタムURLスキーム、もう1つはユニバーサルリンクです。この記事ではその2つの仕様と違いついて話したいと思います。
カスタムURLスキームとは
カスタムURLスキームはmyapp://
のよう、独自のURLスキームを利用してアプリを直接起動させるURLです。
例えば、以下のような形のURLです。
comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic
上記をGoogleマップアプリインストール済みのスマホで開くと、Googleマップアプリが起動されます。(アプリがインストールされてない場合は機能しません)
もしブラウザーで開く場合は以下のようなダイアログが出ますが、アプリがインストールされてない場合やユーザーが許可しない場合は機能しないので、注意が必要です。
また、カスタムURLスキームは他のアプリとスキームが重複する場合があります。その場合、AndroidだとそのURLを開きたいアプリを選択することができますが、iOSだとベージョンによって機能しない場合もあるため、注意が必要です。
メリット | デメリット |
---|---|
実装が楽 | アプリをインストールしてない場合機能しない |
ユーザーの許可が必要 | |
他のアプリとスキームが重複する可能性がある |
カスタムURLスキームは簡単に実装できます。アプリにカスタムURLスキームを登録(iOSの場合Xcodeで)したら、iOSがカスタムURLスキームを認知できるようになり、アプリが起動される仕様です。
詳しい実装方法については、以下の公式ドキュメントで確認できます。
ユニバーサルリンクとは
ユニバーサルリンクはAppleが開発した技術で、HTTPS URLでアプリを起動させることができます。
(※Androidは「アプリリンク」という類似の技術を利用します。)
ユニバーサルリンクの仕組みは少し複雑なため、Googleマップをブラウザーで開いた時を例として裏処理を簡単に話したいと思います。
-
ユーザーがhttps://maps.google.comにアクセスする
-
iOSがhttps://maps.google.com/apple-app-site-association にリクエストを送る
すると、以下のようなJSONが返されます
{
"applinks": {
"apps": [],
"details": [
{
"appID": "EQHXZ8M8AV.com.google.Dzimuth",
"paths": [
"/",
"/maps",
- 上記のappIDを確認し、該当のアプリを開く
上記の対応が必要なため、ユニバーサルリンクの実装は少し複雑です。実装方法の詳細については公式ページで確認できます。
ユニバーサルリンクは(2)にてドメイン認証を行なっているため、セキュリティ的にも安全ですし、他のアプリとも競合しないメリットがあります。
メリット | デメリット |
---|---|
アプリがインストールされてない場合のフォールバックが入っている(Webにリダイレクト) | 実装が複雑 |
ユーザーの許可が不要 | |
他のアプリと競合しない |
まとめ(TL;DR)
カスタムURLスキーム
-
myapp://
のよう形式のURLでアプリを起動させる - 実装が楽
- アプリをインストールしてない場合は機能しない
ユニバーサルリンク
- HTTPS URLでアプリを起動させる
- 実装が複雑
- アプリをインストールしてない場合、WEBにリダイレクトする
- セキュリティ的に良い
ユーザーが必ずアプリをインストールしていると保証できる場合はカスタムURLスキームで大丈夫ですが、それ以外の場合はユニバーサルリンクの利用がおすすめです。
Discussion