「.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が一般的。
通知の送信 †
- 任意の箇所でアプリケーションのイベントを検出する。
- バックエンドサーバは、サービスアカウント情報と
ユーザ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
JPush †
ニフクラ mobile backend †
Firebase †
最もポピュラーなmBaaS