お客さんがとっても大事にしている「流入元」の計測、Firebaseを使っていればDynamic Linksで計測しているアプリも多いのではないでしょうか?
お手軽に実装できますし、iOSにも対応していてとっても便利!!なのですが、ここ最近挙動が怪しい気がしており、記録しておきます。
Firebase Dynamic Linksとは
Firebase Dynamic Linksとは、Googleが提供する様々な環境で機能するリンクです。
インストールの有無に関係なく、アプリが未インストールであればストアに誘導し、インストール済みであればリンク先のコンテンツを直接開くことができます。
コンバージョンの確認方法
ダイナミックリンクに関連するイベントはAndroidは3種類、iOSは2種類です。
イベント名は下記表の通りです。dynamic_link_app_updateはAndroidのみのイベントになります。
イベント名 | 発生タイミング |
---|---|
dynamic_link_first_open | ダイナミックリンクを経由して、初回起動の場合 |
dynamic_link_app_open | ダイナミックリンクを経由して、2回目以降の起動の場合 |
dynamic_link_app_update | ダイナミックリンクを経由して、アプリを更新し起動した場合 |
コンバージョンを確認するためには、事前にこれらのイベントをコンバージョンに設定しておく必要があります。
ちなみに、初回起動の際に発生するfirst_openですが、dynamic_link_first_openで起動した際もfirst_openは発生します。どちらか一方ではないのでアプリ全体の初回起動のコンバージョンを確認したい場合はfirst_open、ダイナミックリンクの効果を確認したい場合はdynamic_link_first_openと使い分けが可能です。
ダイナミックリンクの挙動
正常時
ダイナミックリンク経由で起動した際は、上記の3つ(iOSは2つ)のイベントが発生すると記述しましたが、Firebaseコンソールには現れない、firebase_campaignというイベントも共に発生します。
firebase_campaignは自動で計測されるイベントの一つで、キャンペーン計測のためのイベントです。参照元やメディアなどのイベントパラメータを持っています。
このfirebase_campaignとダイナミックリンクのイベントのいずれかがセットで発生する、というのが仕様のようです。
最近(2021/01)のAndroid
この記事を書いている時点で最新のFirebase Analytics SDK 18.0.0ですが、このバージョンを入れるとなんとダイナミックリンク関連のイベントが発生しません。。結構ハマりました。。コンバージョン云々以前の問題でした。。
下記のようなエラーが出ていました。
E/GAv4-SVC: Device AnalyticsService not registered! Hits will not be delivered reliably.
E/FA: Name is reserved. Type, name: event, dynamic_link_app_open
E/FA: Invalid event name. Event will not be logged (FE): dynamic_link_app_open(dynamic_link_app_open)
リリースノートには、18.0.0の変更点として「下記の予約語を追加しました」とあるのですが、これが何らかの影響を及ぼしていると思われます。
追々修正されるかと思いますので、ダイナミックリンクを使用していて、Analytics SDKを更新・追加する場合には、18.0.0を避けることをお勧めします。一つ前の17.6.0だと正常な挙動をしていましたので、現時点では17.6.0を入れるのがいいかもしれません。
最近(2021/01)のiOS
ダイナミックリンクには長いダイナミックリンクと短いダイナミックリンク(短縮URL)がありますが、短いダイナミックリンクの場合のdynamic_link_app_openのコンバージョンにUTMパラメータが反映されません。。全て(not set)になってしまいます。
長いダイナミックリンクだとコンバージョンは設定通りに反映されます。
原因がAnalyticsのSDKにあるのかDynamic LinksのSDKにあるのか特定はしていませんが、この問題についてはFirebaseチームに問い合わせを行い、Firebaseチームで把握済みのバグであるという回答をもらっています。優先度を上げて対応していくけど、入り組んでいてちょっと時間がかかるかも、、ということでした。
ちなみに、SDKのバージョンの組み合わせを変えていろいろ試してみましたが、今のところ正常パターンで動作する組み合わせを見つけられていません。長いダイナミックリンクで代替可能であれば、長いダイナミックリンクを使うのがいいかと思います。
まとめ
ダイナミックリンク、ちょっと挙動が怪しいのでは、、??ということで今回この記事をまとめました。皆さんのところはどうですか・・・?
SDKのバージョンによって期待通りに動作したりしなかったりするので、SDKのバージョンを変更する際には想定したイベントが発生するか確認した方が良さそうです!
また修正されたらこちらの記事を更新したいと思います。