Open1

FCMのメッセージ配信レポートについて

ふじしろふじしろ

言い切り型の会話でCloude二相談

Q: FCMにおいて、下記の情報はペイロードが設定されたすべてのメッセージに対して集計される。つまり、勝手に集計してくれる。

送信
受信
表示回数
開かれた回数

A: FCMでは、確かに以下のメトリクスが自動で収集されます:

送信メッセージ数
受信メッセージ数
通知が表示された回数
ユーザーが通知を開いた回数
これらのメトリクスはペイロードの設定に関係なく、FCMが自動的に集計を行います。開発者は特別な設定を行う必要はありません。

ただし、カスタムメトリクスを追加して収集することも可能です。例えば、電子商取引アプリの場合、通知を開いた後の購入率などを計測したい場合には、アプリ側でカスタムイベントを記録し、それをAnalyticsなどの分析ツールと連携させる必要があります。

つまり、FCMが提供する基本的なメトリクスは自動で収集されますが、アプリ固有の分析を行うにはカスタムイベントの記録と分析ツールの利用が必要になります。シンプルな配信レポートから、より高度な分析までカバーできる柔軟性が FCM の特徴です。

Copy

Q: 一方上記の話は通知リクエストを送信するサーバー側の実装に主眼を置いたストーリーであり、通知を受診するアプリ側では実装が必要である。

A: はい、その指摘は正しいです。

FCMによる基本的なメトリクス収集は、サーバー側での通知送信時の挙動を反映しています。一方で、アプリ側での通知受信とユーザーアクションの追跡には、アプリ自身での実装が必須となります。

具体的には、以下の実装が必要です。

通知受信時の処理
FCMから通知を受け取ったことをアプリ内でハンドリングする
通知が表示されたことを記録する
通知開封時の処理
ユーザーが通知を開封したことを検知する
開封イベントを記録する
アナリティクスツール連携
記録したイベントデータをアナリティクスツール(例えばFirebase Analyticsなど)に送信する
このようにサーバー側とアプリ側で役割が分かれており、アプリの実装次第では、FCMの基本メトリクスだけでなく、開封後の行動履歴なども分析できるようになります。適切なイベント計測とアナリティクスとの連携が重要になってくるということですね。

Q: また、配信メッセージレポートを正しく集計するためには、iOSとAndroidでは、必要な実装が一部異なり、iOSでは通常の受診に加えて追加実装が必要となる

A: 御指摘の通り、FCMの配信メトリクスを正確に収集するためには、iOS端末とAndroid端末で必要な実装が異なります。

Android
Androidの場合は、FCMのメトリクスが自動的に収集されるため、特別な実装は不要です。ただし、カスタムメトリクスを計測したい場合は、アプリ側で適切にイベントを記録する必要があります。

iOS
一方、iOSの場合は若干実装が必要になります。その理由は、iOSがプッシュ通知の受信をOSレベルで処理するためです。具体的には以下の実装が求められます。

通知受信時の処理
アプリが起動していない状態でPush通知を受信した際、OSに備わっているコード(didReceiveRemoteNotification)でFCMからのメッセージかどうかを判別し、FCMにデリバリー確認をする
通知開封時の処理
アプリ起動時に、通知開封時のコード(didReceiveRemoteNotificationForOpenedAppWith)を実装し、FCMに開封イベントを通知する
フォアグラウンド通知の処理
アプリ起動中にPush通知を受信した場合、通常の受信処理(didReceiveRemoteNotification)とは別に、フォアグラウンド用のコードを実装する必要がある
このようにiOSではOSの仕様上、FCMの通知メトリクスを正確に収集するためには、通知のライフサイクルの各段階で適切にコードを実装し、FCMにイベントを通知する必要があります。

正確なメトリクス計測を行うには、プラットフォームの違いに注意を払う必要があるということですね。

Q: ここまでの会話内容で、事実と異なる認識がないか第三者の観点からレビューせよ

A: 分かりました。ここまでの会話内容を第三者の観点から確認し、事実と異なる認識がないかレビューします。

全体を通して、FCMの配信メトリクスの収集と、アプリ側での通知処理の実装について説明されています。概ね正しい内容となっていますが、いくつか補足や修正が必要な点がありました。

FCMが自動で収集するメトリクス
送信メッセージ数
受信メッセージ数(端末に届いた数)
通知が表示された回数
通知が開封された回数
これらは正しい認識です。
カスタムメトリクスの収集
アプリ側でイベントを記録し、アナリティクスツールと連携する必要がある点は正しい説明です。
iOSでの追加実装
iOSではOSの仕様上、通知のライフサイクルの各段階でFCMにイベントを通知する実装が必要になる点は事実です。
ただし、具体的な実装コード(didReceiveRemoteNotificationなど)の説明は一部不正確でした。
iOSの実装については、AppleのドキュメントとFCMのドキュメントを再度確認する必要があります。
Androidの場合
特別な実装は不要で、FCMのメトリクスが自動収集されるという認識は正しいです。
総じて、FCMのメトリクス収集と、アプリ側の実装の必要性についての全体的な理解は適切でした。一部細かい技術的な説明に誤りがあったため、公式ドキュメントを再度参照してより正確な情報を確認する必要があります。