Closed5

Cloud Messaging ユーザーセグメントやBQエクスポートなど

ツルオカツルオカ

Firebase Blogが個人的に一番わかりやすい
https://firebase.blog/posts/2022/12/targeting-audiences-with-fcm/
https://www.youtube.com/watch?v=pP044hR6zNQ

ユーザープロパティとオーディエンスの違いが若干ややこしいけど、指定した条件が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)に関係なく、メッセージで利用可能なすべてのデータが含まれます。

手段関係なくもれなく出力されるのでそこは安心

スキーマ

https://firebase.google.com/docs/cloud-messaging/understand-delivery?hl=ja&platform=ios#what-data-exported

注意: Firebaseコンソールからの「リンク」設定だけではエクスポートされない

Firebaseコンソールから「リンク」設定すると以下のサービスアカウントが作成されるのだが、

exporter@fcm-bq-export-prod.iam.gserviceaccount.com

これにBigQuery権限がついていないのでデータがエクスポートされない問題がある(firebase_messagingデータセットが作成されるだけ)。bigquery.transfers.exportbigquery.tables.createポリシーをアタッチする必要があるので、明示的に「BigQueryデータ編集者」ロールなどを付与してあげる必要がある。
https://cloud.google.com/bigquery/docs/access-control

https://noboruhirabayashi.com/blog/firebase-cloud-messaging-bigquery-export/

このスクラップは1ヶ月前にクローズされました