
Firebase DynamicLinksでディープリンクを楽々実装!
-
2023年9月19日
おはこんばんにちは!
クライアントエンジニアのIです。
今回はディープリンク機能をFirebase DynamicLinksを導入して実装した際、結構簡単に実装できたのでその紹介をしたいと思います。
ディープリンクとは
Webページやアプリから他のアプリへ移動し、特定のコンテンツへ遷移させる機能です。
身近な例ですと、Youtubeなどにある共有ボタンから他のSNSアプリを起動したりする機能のことです。
ディープリンクの種類
ディープリンクは大きく3つの種類に分けられるそうです。
- ディープリンク
一般的なタイプ。既に移動したいアプリがインストール済みであった場合、そのアプリへ移動し、特定のコンテンツへ遷移する。 - ディファードディープリンク
基本的にはディープリンクと同じだが、移動したいアプリが未インストールだった場合、GooglePlayStoreやAppStoreなどのStoreに遷移する。
そして、そのままインストールを終えると、ディープリンク同様特定のコンテンツへ遷移する。 - コンテクスチュアルディープリンク
ディープリンクの機能に加え、パラメーターの追加によって、ユーザー単位でのウェルカムメッセージやおすすめコンテンツをアプリ内に表示することができる。
Firebase DynamicLinksとは
Firebaseが提供しているディープリンクのURLを生成してくれるサービスです。
URL生成時の設定によって、ディファードディープリンクとしても生成可能です。
また、各プラットフォーム導入用のSDKが用意されています。
本来であれば、Androidではスキーム定義とかが必要ですし、iosではディファードディープリンクとして実装する場合、独自サーバー上にapple-app-site-associationを作成・配置するなど、いろいろと準備する必要があります。
それらをSDKを導入するだけでいい感じにセットアップしてくれます!ありがたや。
実装
今回はディファードディープリンクとして実装します。
といっても、通常のディープリンクの実装と特に違いはありません。
なお、開発環境はUnity2021.3.14f1です。
ディープリンク作成
Firebaseコンソールから「プロジェクトを追加」を行い、プロジェクト専用画面を開きます。
そして、一番下にある「すべてのFirebase機能を表示」からDynamicLinksを選択します。
あとは指示に従って設定していけばリンクが生成されます。
今回はテスト用なので、以下のようにしました。
Firebase DynamicLinks導入
必要なSDKをFirebaseのサイトからダウンロードします。
依存関係のSDKも忘れずにダウンロードします。
基本的には最新バージョンで大丈夫だと思います(実装時はver.10.3.0)。
コード実装
今回は、受け取ったディープリンクを画面上に表示する処理を実装します。
public class DeepLink : MonoBehaviour
{
[SerializeField] private TMP_Text text;
private void Start()
{
DynamicLinks.DynamicLinkReceived += OnDynamicLink;
}
private void OnDynamicLink(object sender, EventArgs args)
{
var dynamicLinkEventArgs = args as ReceivedDynamicLinkEventArgs;
var uri = dynamicLinkEventArgs.ReceivedDynamicLink.Url;
text.text = string.Format("Received dynamic link : {0}\n\n Authority : {1}\n\n Scheme : {2}\n\nPathAndQuery : {3}\n\n Query : {4}",
uri.OriginalString,
uri.Authority,
uri.Scheme,
uri.PathAndQuery,
uri.Query);
}
private void OnDestroy()
{
DynamicLinks.DynamicLinkReceived -= OnDynamicLink;
}
}
以上のスクリプトをGameObjectにアタッチして、テキストオブジェクトを登録すれば完了です。
iOS設定
iosについては権限周りで少し設定が必要です。
Xcodeを開き、Signing & Capabilitiesタブで「+ Capability」から、Associated Domainsをダブルクリックで追加します。
そして、追加されたAssociated Domainsにドメイン名を設定します。
なおドメイン名は独自で設定しなければ、
applinks:{作成したダイナミックリンクの接頭辞}
となります。
作成したダイナミックリンクの接頭辞は、ダイナミックリンク作成画面から確認できます。
今回の場合だと、
「itestapp.page.link」が作成したダイナミックリンクの接頭辞で、
ドメイン名は「applinks:itestapp.page.link」となります。
※なお、Signing & CapabilitiesタブでAutomatically manage signingにチェックがついていない場合はプロビジョニングプロファイルの更新が必要です。
実機確認
以上の実装を終えて、ストアにアップロードすればディープリンクの実装が完了です。
テスト用にストアにアップロードしたものがあるので実際に確認できます。(Androidのみ)
ダイナミックリンク:https://itestapp.page.link/test
おわりに
ディープリンクの実装は大変そう、、と思っていたのですが、意外と簡単に実装できました。
今回はディープリンクをあらかじめ作成しているので内容は毎回固定ですが、APIを利用して動的に生成することも可能です。
ディープリンク、ディファードディープリンクはアプリのユーザビリティやコンバージョン率の向上に大きく繋がると思うので、この記事が参考になれば幸いです。