Deep LinkとApp LinksとFirebase Dynamic Linksの使い分け
メール配信からアプリを起動させたい場合や、Webサービスの機能をアプリとして開きたい場合、起動したいURLをAndroidManifestのIntent Filterに定義してアプリを起動できるようにする。方法はだいたい3つに絞られるので使った体感をまとめておく。
Deep Link
商用のアプリでは基本的に使わない。保障はしないけどとりあえずアプリを起動できるようにはしておきたい場合に使う。
メリット
- 工数が最も低く、アプリの設定だけで完結する
デメリット
- 誰でも同じIntent Filterを設定できるのでアプリの起動を他アプリに取られる可能性がある
- アプリがインストールされていないときはブラウザでそのURLを開くしかない
App Links
基本的にはこれを使う。検証の設定をすることで対象のURLから自分のアプリしか開かないように設定できる。 ただし多少の制限があるのでFirebase Dynamic Linksと使い分ける。
メリット
- サーバサイドの実装が不要で工数が低め
- Android 6.0以上でアプリのsha256 fingerprintを起動したいドメインの .well-known/assetlinks.json に置くことでアプリの検証ができ、そのドメインを開くデフォルトのアプリになれる
デメリット
- 同じドメイン間の遷移ではアプリを開けない
- アプリが入っていないときはブラウザでそのURLを開くしかない
- LINEやSlackなどのアプリ内ブラウザからの起動ができない
Firebase Dynamic Links
Firebaseが提供するサービス。App Linksより更に機能がある。おそらく中身はApp Linksを使っているので検証の設定は同様に必要。 工数がかかることもあるが一番機能はあるので全部Firebase Dynamic Linksにしてしまうのも1つの手。
メリット
- 同じドメイン間での遷移でもアプリを起動できる(おそらくFirebase Dynamic Linksのドメインを一回挟むため)
- アプリがインストールされていないときにGoogle Playに飛ばすなどの挙動を設定できる
- LINEやSlackなどのアプリ内ブラウザからも起動できる
デメリット
- なんか不安定(起動しなかったり空のページが残ったり)
- 起動時にくるくるのアニメーションが出る
- パラメータが動的な場合、サーバサイドの実装が必要で工数がかかる
- 固定でもFirebase上でURLの設定が必要
おわりに
これを使えば絶対にいいというものはないので求める体験や工数と相談でどれを使うとよいか選択するとよさそう