phicdy devlog

Androidアプリ開発やその他技術系の記事をたまに書きます

AndroidとかiOSとかモバイル多め。その他技術的なことも書いていきます。

Deep LinkとApp LinksとFirebase Dynamic Linksの使い分け

メール配信からアプリを起動させたい場合や、Webサービスの機能をアプリとして開きたい場合、起動したいURLをAndroidManifestのIntent Filterに定義してアプリを起動できるようにする。方法はだいたい3つに絞られるので使った体感をまとめておく。

Deep Link

商用のアプリでは基本的に使わない。保障はしないけどとりあえずアプリを起動できるようにはしておきたい場合に使う。

メリット

  • 工数が最も低く、アプリの設定だけで完結する

デメリット

  • 誰でも同じIntent Filterを設定できるのでアプリの起動を他アプリに取られる可能性がある
  • アプリがインストールされていないときはブラウザでそのURLを開くしかない

App Links

developer.android.com

基本的にはこれを使う。検証の設定をすることで対象のURLから自分のアプリしか開かないように設定できる。 ただし多少の制限があるのでFirebase Dynamic Linksと使い分ける。

メリット

  • サーバサイドの実装が不要で工数が低め
  • Android 6.0以上でアプリのsha256 fingerprintを起動したいドメインの .well-known/assetlinks.json に置くことでアプリの検証ができ、そのドメインを開くデフォルトのアプリになれる

developer.android.com

デメリット

  • 同じドメイン間の遷移ではアプリを開けない
  • アプリが入っていないときはブラウザでそのURLを開くしかない
  • LINEやSlackなどのアプリ内ブラウザからの起動ができない

Firebase Dynamic Links

firebase.google.com

Firebaseが提供するサービス。App Linksより更に機能がある。おそらく中身はApp Linksを使っているので検証の設定は同様に必要。 工数がかかることもあるが一番機能はあるので全部Firebase Dynamic Linksにしてしまうのも1つの手。

メリット

  • 同じドメイン間での遷移でもアプリを起動できる(おそらくFirebase Dynamic Linksのドメインを一回挟むため)
  • アプリがインストールされていないときにGoogle Playに飛ばすなどの挙動を設定できる
  • LINEやSlackなどのアプリ内ブラウザからも起動できる

デメリット

  • なんか不安定(起動しなかったり空のページが残ったり)
  • 起動時にくるくるのアニメーションが出る
  • パラメータが動的な場合、サーバサイドの実装が必要で工数がかかる
  • 固定でもFirebase上でURLの設定が必要

firebase.google.com

おわりに

これを使えば絶対にいいというものはないので求める体験や工数と相談でどれを使うとよいか選択するとよさそう