「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
SaaS開発で調べたプッシュ通知についてのメモ。
- プッシュは、特定のアカウントに対して行われるが、
インフラストラクチャとしては、Apple(or Google)の
通知用サーバに、スマホネイティブ・アプリケーションを登録する形になる。
- APNs
Appleの通知用サーバ(iOSに通知を行う)
- FCM
Googleの通知用サーバ(Androidに通知を行う)
- 登録後に、アプリケーションをインストールすると、
Device Tokenや Registration Token等と言った端末+アプリを識別する
トークンが発行されるのでそれを使用してサーバ(Resource Server)から通知を行う。
もできる。
仕組み †
- AndroidとiOSでは、プッシュ通知に、前述の異なるが類似の仕組みが採用されている。
- なお、プッシュ通知の動作確認をする為にエミュレータは使用できない。
- mBaaSは、AndroidとiOSの差異をラップして隠蔽し、
AndroidからもiOSからも利用できるプラグインを用意しているケースが多い。
個人に送信 †
初期化 †
- バックエンドサーバにFCM/APNs/JPushが発行した
サービスアカウント情報(JSONファイル)を配置する。
- デバイスにアプリケーションをインストールする際、
FCM/APNs/JPushサーバにデバイス登録を行う。
- 登録結果としてデバイストークンを受け取る。
- デバイストークンをバックエンドサーバに送って保存する。
(この際、ユーザIDと紐付けて保存するため認証が必要)
※ 2, 3 の処理は、プラグインに
「デバイストークンを バックエンドサーバに送るデリゲート」
を渡せば短いコードで完了してしまう。
通知の送信 †
- 任意の箇所でアプリケーションのイベントを検出する。
- バックエンドサーバは、サービスアカウント情報と
ユーザIDに対応するデバイストークンを使用して、
FCM/APNs/JPushサーバにプッシュ要求を送信する。
- FCM/APNs/JPushサーバは、ユーザIDに対応するデバイスにプッシュ通知を送信する。
トピック購読者に送信 †
初期化 †
- 自端末のトピック登録依頼をFCM/APNs/JPushサーバに送信する。
- 個人に送信と異なり、デバイストークンは不要?
- 恐らく、トピック登録時、引数に現れないが、内部的に、
FCM/APNs/JPushサーバにデバイストークンを渡している。
通知の送信 †
- 任意の箇所でアプリケーションのイベントを検出する。
- バックエンドサーバは、サービスアカウント情報と
トピック名を使用して、FCM/APNs/JPushサーバにプッシュ要求を送信する。
- FCM/APNs/JPushサーバは、トピック登録したデバイスにプッシュ通知を送信する。
特定グループに送信 †
初期化 †
個人に送信と異なる点は、
グループを作成依頼をFCM/APNs/JPushサーバに送信して、通知キーを受け取る点。
通知の送信 †
個人に送信と異なる点は、
FCM/APNs/JPushサーバにプッシュ要求を送信する際に、
サービスアカウント情報と通知キーを使用する点。
全体に送信 †
- Firebaseコンソールからのみ可能。
- バックエンドサーバ経由で行う場合、
事前に「全体に送信」トピックを登録しておく。
参考 †
iOS †
...。
Android †
- androidでプッシュ通知を実装する | TECH Projin
ニフクラ mobile backend †
Firebase †
最もポピュラーなmBaaS