Cloud Messaging ユーザーセグメントやBQエクスポートなど
Firebase Blogが個人的に一番わかりやすい
ユーザープロパティとオーディエンスの違いが若干ややこしいけど、指定した条件が1つか複数かくらいの違いみたい。
項目 | 概要 |
---|---|
User Properties |
setUserProperty で指定しカスタムディメンションで作成したユーザー属性ごとにセグメントができる |
User Audiences | GA4でトラックしているイベントやユーザープロパティをかけ合わせてユーザーのグループを作成できる。反映までには最大24時間以内との記載あり。オーディエンスは1 日~540 日までの間で有効期限を設定でき、デフォルトでは 30 日に設定されている。期限が過ぎたユーザーは、オーディエンスから外れる。 |
Imported Segments | BigQueryで指定のデータセット&スキーマにデータを入れておけばセグメントとしてインポートしてプッシュ通知でセグメントできる。GA4では計測スコープ外のサブスクリプション継続回数とかアプリ特有のデータとか使って自由にセグメントできる |
Topics | アプリコード上に特定のトピック名をサブスクライブしておけば、トピック宛に送信されたメッセージに対してリアルタイムに通知を受け取ることができる。上記のFirebase Blogでは、週末ハイキングにおけるルートをお気に入り登録する状況で、悪天候があれば即時に通知する用途が例であげられている。 |
User Propertiesの設定方法
注意点として、基本的にアプリの実装でsetUserProperty
でカスタムプロパティを指定するが、これだけではプッシュ通知やRemote Configなどでセグメントとして利用できない。セグメントとして利用するにはCustom Demention(カスタムディメンション)で作成する必要がある。
オーディエンスの作り方:
uidを指定して特定のUserのみにプッシュ通知を送信する方法
普通にFCM TokenをFirestoreなどに保持している場合は、Admini SDKやHTTP v1などでトークン指定して送信できるが、非エンジニア向けにFirebaseコンソールでも実現したい。
正攻法かは不明だが、User Propertyで指定するのが早い気がする。実装の観点で言えば、setUserId
メソッドがありログイン・ログアウト時にこのメソッドを処理すれば済む話だが、カスタムディメンションで指定するためにあえてsetUserProperty
にもセットするとできそうではある。
あとは、user_id
をカスタムディメンションに登録して、完全一致で指定のuidで送信すれば指定ユーザー宛に送信できるはず。
追記
これはダメで、予約語になっているのでuid
とか別の命名にする必要がありそう。
E/FA (23653): Name is reserved. Type, name: user property, user_id
setUserId
でセットしているので、uid指定送信にも対応してほしいところだが今のところなさそう。他にも良いやり方があれば知りたい。
BigQueryエクスポート
リンクしておくとfirebase_messaging
というデータセットが自動で作成される。
BigQuery へのエクスポートには、メッセージの種類、メッセージの送信手段(API、Notifications Composer)に関係なく、メッセージで利用可能なすべてのデータが含まれます。
手段関係なくもれなく出力されるのでそこは安心
スキーマ
注意: Firebaseコンソールからの「リンク」設定だけではエクスポートされない
Firebaseコンソールから「リンク」設定すると以下のサービスアカウントが作成されるのだが、
exporter@fcm-bq-export-prod.iam.gserviceaccount.com
これにBigQuery権限がついていないのでデータがエクスポートされない問題がある(firebase_messaging
データセットが作成されるだけ)。bigquery.transfers.export
やbigquery.tables.create
ポリシーをアタッチする必要があるので、明示的に「BigQueryデータ編集者」ロールなどを付与してあげる必要がある。