Skip to content

DNET_PushNotification

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

プッシュ通知

概要

SaaS開発で調べたプッシュ通知についてのメモ。

  • プッシュは、
    特定のアカウントに対して行われるが、
    インフラストラクチャとしては、

    • Apple(or Google)の通知用サーバに、

      • APNs
        Appleの通知用サーバ(iOSに通知を行う)
      • FCM
        Googleの通知用サーバ(Androidに通知を行う)
    • スマホネイティブ・アプリケーションを登録する

    形になる。

  • プッシュ通知までの流れ。

    • スマホネイティブ・アプリケーションの登録後に、

    • アプリケーションを実機にインストールすると、
      端末+アプリを識別するデバイス・トークンが発行される

    • それを使用してサーバから通知を行う。

      • AuthZ(AuthN) Server
      • Resource Server
  • なお、個人に送信するだけではなく、

    デバイス・トークンを使用して行う。

仕組み

  • AndroidとiOSでは、プッシュ通知に、前述の異なるが類似の仕組みが採用されている。

  • なお、プッシュ通知の動作確認をする為にエミュレータは使用できない(実機へのインストールが必要)。

  • mBaaSでは、AndroidとiOSの差異をラップして隠蔽し、
    AndroidからもiOSからも利用できるプラグインを用意しているケースが多い。

個人に送信

初期化(個人に送信)

  1. ...。
  2. バックエンドサーバにFCM / APNs / JPushが発行した
    サービスアカウント情報(JSONファイル)を配置する。
  3. ...。

デバイス・トークンの保存

  1. デバイスにアプリケーションをインストールする際、
    FCM / APNs / JPushサーバにデバイス登録を行う。
  2. 登録結果としてデバイス・トークンを受け取る。
  3. デバイス・トークンをバックエンドサーバに送って保存する。

※ 1, 2 の処理は、プラグインに
 「デバイス・トークンを バックエンドサーバに送るデリゲート」
 を渡せば短いコードで完了してしまう。

※ 登録の際、ユーザIDと紐付けて保存するため認証が必要。
 ネイティブ・アプリの認証であればPKCEが一般的。

通知の送信(個人に送信)

  1. 任意の箇所でアプリケーションのイベントを検出する。
  2. バックエンドサーバは、
    「サービスアカウント情報」と「デバイス・トークン」を使用して、
    FCM / APNs / JPushサーバにプッシュ要求を送信する。
  3. FCM / APNs / JPushサーバは、デバイスにプッシュ通知を送信する。

トピック購読者に送信

トピック購読は、ユーザ自身が行う (NativeからFCM / APNs / JPushサーバに直アクセス)。

初期化(トピック購読者に送信)

  • デバイス・トークンを使用して、自端末のトピック登録依頼をFCM / APNs / JPushサーバに送信する。
    • 個人に送信と異なり、送信時のデバイス・トークンは不要。
    • トピック登録時、FCM / APNs / JPushサーバにデバイス・トークンを渡して保存しているため。

通知の送信(トピック購読者に送信)

個人に送信と異なる点は、
FCM / APNs / JPushサーバにプッシュ要求を送信する際に、
「サービスアカウント情報」と「トピック名」を使用する点。

特定グループに送信

グループ作成とユーザ登録は、バックエンドの管理者やアプリケーションで行う。

初期化(特定グループに送信)

個人に送信と異なる点は、

グループの作成依頼をFCM / APNs / JPushサーバに送信して、

「通知キー」を受け取る点。

通知の送信(特定グループに送信)

個人に送信と異なる点は、
FCM / APNs / JPushサーバにプッシュ要求を送信する際に、
「サービスアカウント情報」と「通知キー」を使用する点。

全体に送信

  • Firebaseコンソールなどポータルから送信可能。
  • バックエンドサーバ経由で行う場合、
    事前に「全体に送信」トピックを登録しておく。

参考

プッシュ通知サーバ

Android (FCM)

Android (FCM)

iOS (APNs)

iOS (APNs)

JPush

mBaaS利用時

mBaaS

ニフクラ mobile backend

Firebase

最もポピュラーなmBaaS

移行メモ

  • 「(Nativeからに〜サーバに直アクセス)」の「に」は衍字のため除去した。
  • 「グループを作成依頼を〜サーバに送信して、」→「グループの作成依頼を」に修正した。
  • 同名の見出し(「初期化」「通知の送信」)が送信方法ごとに重複し GitHub Wiki でアンカが衝突するため、括弧で文脈を補って一意にした。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの PKCE に張り替えた。
  • PukiWiki のページ内アンカ(#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替えた。

Tags: 移行, プッシュ通知, FCM, APNs, JPush, mBaaS, Firebase, スマホ, モバイル

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally