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