以前の記事をアップデート版を書く機会があったので再投稿🏃♂️
yamatooo.blog
Firebase Dynamic Links
Firebase Dynamic Linksは、Firebaseが提供するDynamic Links機能で、ユーザがリンクを開いた時の挙動をネイティブアプリのインストール状況などに応じて遷移先を変えることができる技術です。
Firebase Dynamic Linksの種類
どのような生成方法があるのかを見ていく前に、Firebase Dynamic Linksの種類を見ていきます。現在FirebaseにはLong Dynamic Links
とShort Dynamic Links
の二つのDynamic Linksがあります。
- Long Dynamic Links
- Short Dynamic Links
Short Dynamic Links
の方がURLの長さが短いのは、名前から察することができると思いますが、両者には大きな違いが一つあり、それは自動でトラッキングされるデータです。
ちなみに、僕が調べた限りではそれぞれ自動でトラッキングされるデータは下記のようになります。
Dynamic Links Type |
Firebase Dynamic Links Analytics |
Google Analytics |
Short Dynamic Links |
アプリの初回起動、アプリの再開、クリック数、リダイレクト、アプリインストール |
アプリの初回起動、アプリの再開、アプリのアップデート |
Long Dynamic Links |
なし |
アプリの初回起動、アプリの再開、アプリのアップデート |
Firebase Dynamic Links Analytics
は、Firebaseコンソール(Dynamic Linksセクション)またはREST API経由でトラッキングデータを取得することができ、Google Analytics
についてはFirebaseコンソール(Analyticsセクション)または、Google AnalyticsデータをBigQueryにエクスポートすることで、BigQueryからデータを見ることができます。
🎣
Firebase Dynamic Linksの生成方法
ということで、次はFirebase Dynamic Linksの生成方法について見ていきましょう。
まず、公式ドキュメントに載っている概要説明の「仕組み」セクションの最初の文には下記のように書いてあります。
ダイナミック リンクを作成するには、Firebase コンソール、REST API、iOS または Android Builder API を使用します。
参照: https://firebase.google.com/docs/dynamic-links?hl=ja#how-does-it-work
そう。この文を見て僕はAPIを介してのみFirebase Dynamic Linksを生成できないものだと勘違いしていました。厳密には、Short Dynamic Links
の場合はAPIを介してリンクを生成する必要があり、Long Dynamic Links
の場合は手動でURL構築をすることも可能ということです。ということで、Firebase Dynamic Linksの生成方法は下記の通りになります。
- Firebaseコンソール
- Dynamic Links Builder API
- REST API
- *URLの手動構築(今回の話)
Dynamic Links Builder API
は、iOSやAndroidといったそれぞれのプラットフォームで用意されているFirebase SDKに内包されていて、リンクをアプリ内で動的に生成する場合なんかに使われていて、REST API
はDynamic Links Builder API
が使用できない環境下でリンクを動的に生成したい場合なんかに使用されます。
(というかこのBuilder API使ったことある人なら、Long Dynamic Links
生成する分にはネットワークを介する必要ないから、URL手動構築できんじゃん!って気付いてそう。)
guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix)
linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")
guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")
URLの手動構築
結論から言うとURLの手動構築は、下記のような形式で行うことができます。
https://[your_domain].page.link/?link=https://komer.co/skus/sDUqpxQg864DJPLriMTG&ibi=com.cookpad.ios.komerco-customer
[your_domain].page.link
でドメインを指定して、あとはパラメータを追加してリンクタップ時の挙動を変えていく感じですね。
それぞれのパラメータについては、公式ドキュメントに詳しく書かれているので省略しますが、後述す解析パラメータ以外の大事な部分(今回はiOSに関連する部分)だけ抜粋して一旦説明します。
link
まずは、link
パラメータ。これがアプリ内の特定のコンテンツを開くための重要なリンクで、アプリ側ではこのリンクを処理して、特定のコンテンツを表示できるようにしておく必要があります。また、このリンクはHTTP、HTTPSのいずれかを使用して設定する必要があり、アプリがインストールされていない場合のデフォルト遷移先にもなります。
ibi
Dynamic Linksで開きたいiOSアプリのBundleIDを指定するパラメータで、アプリを開くには必須のパラメータです。ちなみにAndroidアプリでも開きたい場合にも同様に、apn
にパッケージ名を追加する必要があります。
ifl
アプリがインストールされていない場合に開くリンクを指定することができます。デフォルトでは、link
で指定したURLに遷移します。ちなみにAndroidの場合は、afl
で指定する。
st
ソーシャル投稿などで、リンク共有時に使用されるタイトルを設定します。
sd
同じくソーシャル投稿などで、リンク共有時に使用されるリンクの説明を設定します。
si
同じくソーシャル投稿などで、リンク共有時に使用される画像へURLを設定します。
ちなみに画像は、
300x200 ピクセル以上、300 KB 未満である必要があります。
だそうです。
解析パラメータ
そして、Dynamic Linksでのイベンなどをトラッキングするために重要な解析パラメータも、URL手動構築(厳密にはLong Dynamic Links
生成)の際に付与することができます。
ちなみに、下記が追加可能な解析パラメータになります。
そうです!App Storeにも解析パラメータを送信することができるので、Long Dynamic Links
でも、どのリンク経由でアプリがインストールされたのかもわかります。具体的にはct(Campaign Token)
で、どのキャンペーンでアプリがインストールされたのかなどを調べることができます。
結局なにが嬉しいのか?
Dynamic Linksの動的生成が楽!
例えば、ECサービスの商品詳細画面でリンクをタップした時にネイティブアプリの特定のコンテンツに遷移させたいとなった場合、link
パラメータを現在のパスに応じて変更するだけでURLを構築することができるので、商品毎にDynami Linksを発行する手間が省けるといった感じです🎉(つまりFirebaseはいいぞ)
てな感じで今回は以上となります🏃♂️
その他の記事
yamatooo.blog
yamatooo.blog
yamatooo.blog