iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【Firebase】Firebase Dynamic LinksのURL手動構築

以前の記事をアップデート版を書く機会があったので再投稿🏃‍♂️

yamatooo.blog

Firebase Dynamic Links

Firebase Dynamic Linksは、Firebaseが提供するDynamic Links機能で、ユーザがリンクを開いた時の挙動をネイティブアプリのインストール状況などに応じて遷移先を変えることができる技術です。

f:id:yum_fishing:20210702194526p:plain

Firebase Dynamic Linksの種類

どのような生成方法があるのかを見ていく前に、Firebase Dynamic Linksの種類を見ていきます。現在FirebaseにはLong Dynamic LinksShort 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 APIiOS または 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は、iOSAndroidといったそれぞれのプラットフォームで用意されているFirebase SDKに内包されていて、リンクをアプリ内で動的に生成する場合なんかに使われていて、REST APIDynamic 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生成)の際に付与することができます。

ちなみに、下記が追加可能な解析パラメータになります。

パラメータ 送信先
utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid Google Analytics
at, ct, mt, pt App Store(App Store Connectで確認できる)

そうです!App Storeにも解析パラメータを送信することができるので、Long Dynamic Linksでも、どのリンク経由でアプリがインストールされたのかもわかります。具体的にはct(Campaign Token)で、どのキャンペーンでアプリがインストールされたのかなどを調べることができます。

結局なにが嬉しいのか?

Dynamic Linksの動的生成が楽!

例えば、ECサービスの商品詳細画面でリンクをタップした時にネイティブアプリの特定のコンテンツに遷移させたいとなった場合、linkパラメータを現在のパスに応じて変更するだけでURLを構築することができるので、商品毎にDynami Linksを発行する手間が省けるといった感じです🎉(つまりFirebaseはいいぞ)

てな感じで今回は以上となります🏃‍♂️

その他の記事

yamatooo.blog

yamatooo.blog

yamatooo.blog