Flutterのプッシュ通知について
Flutterのプッシュ通知について、
なんとなくしか理解していないので、改めて整理してみる。
まずは、iOS, Androidのプッシュ通知の仕組みを理解していく。
hooksでの実装例
後々参考になりそうなのでメモ
どこから通知が送られているか
Google Play 開発者サービスを搭載した Android デバイス向けの Android トランスポート レイヤ (ATL)
Apple デバイス向けの Apple Push Notification Service (APNs)
APNsがAppleデバイスに通知の配信をしているのは理解できるが、
ATLとはなにか??
Firebase Cloud Messagingとの違いはなんなのか?
GPTの回答
「Android Transport Layer」(ATL)は、Firebase Cloud Messaging(FCM)で使用されるコンポーネントで、Google Playサービスを持つAndroidデバイスに通知を配信するために使用されます。このレイヤーは、クライアントアプリとFCMサーバー間に持続的な接続を維持することで、データペイロードの効率的な送信を可能にします。ATLは、HTTPやXMPPといったプロトコルを使用して、メッセージの安全で確実な配信を保証します。
主なポイント
• 持続的な接続: クライアントアプリとFCMサーバー間の持続的な接続を維持します。
• 効率的なデータ送信: データペイロードの効率的な送信を可能にします。
• セキュアな配信: HTTPやXMPPなどのプロトコルを使用して、メッセージの安全な配信を保証します。
トランスポート層といっているので、
この辺のことをやっている仕組みやサーバの総称だろう
Androidの場合は、FCMを利用することが必須
iOSの場合は、APNsと直接やりとりすることもできるが、証明書の管理など大変
AndroidのためにFCMを利用する必要があるので、
iOSも同じインターフェースで扱えるFCMを使うのがよさそう
Amazon SNSについても調べたい
APNs対応
FCM対応
用語整理
- プラットフォームアプリケーション
- APNsやFCMを指定するもの
- アプリケーションエンドポイント
- プラットフォームアプリケーションの中に存在する
- ここに、各端末のトークンを入れる
- APNsの場合は、デバイストークン
- FCMの場合は、FCMトークン (名前があっているかは怪しい)
- トピック
- 配信対象をグルーピングし、配信対象に一斉に通知を配信するための機能
- サブスクリプション
- トピックと配信対象のアプリケーションエンドポイントを紐づけるもの
- トピックを指定する
- アプリケーションエンドポイントを指定する
参考
Amazon SNS (Simple Notification Service) は、無効になったデバイストークンの管理を自動的に行う機能を提供しています。具体的には、以下のような方法で無効なトークンを処理します。
無効なトークンの管理
1. フィードバックループ:
▪ SNSは、プッシュ通知プロバイダー(Apple Push Notification Service (APNs) や Firebase Cloud Messaging (FCM) など)からのフィードバックを受け取ります。これにより、無効なデバイストークンや期限切れのトークンに関する情報を取得します。
2. 自動削除:
▪ SNSは、フィードバックループを通じて無効と判断されたデバイストークンを自動的に無効化し、エンドポイントから削除します。これにより、アプリケーション側で無効なトークンの管理を行う必要がなくなります。
3. エラーハンドリング:
▪ 通知送信時にエラーが発生した場合、SNSはそのエラーを記録し、適切に処理します。例えば、APNsやFCMがトークンの無効化を通知した場合、SNSはそのトークンを無効としてマークします。
メリット
• メンテナンスの軽減: 無効なトークンが自動的に管理されるため、アプリケーション側での手動メンテナンス作業が大幅に削減されます。
• リソースの最適化: 無効なトークンに対して通知を送信し続ける無駄がなくなり、リソースの利用効率が向上します。
• 一貫性の確保: SNSが一元的にトークン管理を行うため、複数のプラットフォーム間での一貫性が保たれます。
補足
ただし、SNSが無効なトークンを自動的に削除するプロセスが即時に行われるわけではない点に留意する必要があります。フィードバックループやエラーハンドリングのタイミングによって、若干の遅延が発生することがあります。
まとめ
Amazon SNSは、無効なデバイストークンの管理を自動的に行う機能を提供しており、これによりアプリケーション側でのメンテナンス作業が大幅に削減されます。SNSがフィードバックループを通じて無効なトークンを検出し、自動的に削除することで、通知システムの効率と信頼性が向上します。
GPTに聞いてみた内容メモ
FCMからのレスポンスを元に、無効なエンドポイントを無効にしてくれるのは良い
実装は、この記事が分かりやすかった
この記事も分かりやすかった!