Fincs

横断/運用基盤 / 通知基盤

最終更新: 2026-07-16

横断/運用基盤 / 通知基盤

概要

fincs サービスのプッシュ通知配信・未読バッジ集計の基盤レイヤ。Web ブラウザ・iOS PWA・Android PWA 上で動作するプッシュ通知の購読管理・配信処理・未読カウント集計をまとめて担当する。

主な構成要素:

  • プッシュ通知購読管理: ユーザーがブラウザ・PWA で通知購読を ON にするとデバイスのトークンを取得・登録
  • 2 経路の通知配信: Web ブラウザ・Android 向けの主経路と、iOS 向けの互換層経路(別アプリ「PushQuay」経由)の併用
  • 通知設定(4 軸): 講座 / トークルーム / DM / メンションの 4 軸でユーザーが個別に通知 ON/OFF を制御可能
  • 未読バッジ集計: 内部キャッシュとサーバーレス処理で未読数を効率的に取得
  • OS バッジ更新: Service Worker が通知受信時に OS のバッジ(アイコンバッジ)を更新

主な利用想定は、新規トーク投稿・記事公開・配信開始・運営告知などの即時通知、未読カウントの集計と表示、iOS PWA での通知運用など。各機能側の通知発火条件(どんなイベントで通知するか)は機能側 PSD(トーク通知 等)を参照。

iOS は PWA 化が前提: iOS Safari ではブラウザ自体に通知機能の標準サポートがないため、ホーム画面追加で PWA として動作させた状態でのみ通知を受け取れる。PWA 化されていない iOS ユーザーには「PushQuay」という互換層アプリを経由して通知を届ける運用を提供。

通知トークンの定期再送: Web Push の通知トークンは一定期間(内部の想定では約 14 日)で無効化される前提のため、ブラウザ側で 1 時間ごと + 画面表示時に再送して有効性を維持する仕組みを持つ。

通知許可拒否後の復帰について: ユーザーが一度ブラウザで通知許可を拒否すると、サービス側からは再度の許可ダイアログを出せない。ブラウザ設定から手動で許可に戻す必要があるため、CS 案内で手順を提示する運用となる。

通知本文の長さ制限: トーク投稿などで本文が長い場合、通知に表示される本文は内部的に約 2KB で切り詰められる。全文は通知タップ後の本文画面で確認する。

利用シナリオ

シナリオ 1: 新規トーク投稿でプッシュ通知を受け取る

トークルームで他の会員・講師が新規投稿すると、プッシュ通知が即座にデバイスへ届く。Web ブラウザ・Android PWA は主経路、iOS PWA は同経路または互換層(PushQuay)経由で受信。

シナリオ 2: 通知購読 ON / OFF を切り替える

ユーザーがブラウザの通知許可ダイアログで許可 / 拒否を選択することで、購読を切り替え。許可済みの状態でも、講座 / トークルーム / DM / メンションの 4 軸で個別に通知設定を ON / OFF できる。

シナリオ 3: iOS でホーム画面追加 → PWA 化 → 通知受信

iOS ユーザーがホーム画面追加で PWA 化することで通知機能が利用可能になる。PWA 化していないと iOS では通知が届かない仕様のため、CS で「iOS で通知が来ない」相談時はホーム画面追加を案内する。

シナリオ 4: 未読バッジの表示

未読のトーク・通知がある状態でアプリを閉じると、OS のホーム画面アイコンに未読数のバッジが表示される。ユーザーが未読を確認すると自動的にクリアされる。

よくある失敗ケース

  • 通知許可拒否後の復帰不可: ブラウザ側で一度拒否すると、サービス側からは再許可ダイアログを出せない。ユーザー本人がブラウザ設定から手動許可へ戻す必要がある
  • PWA 化していない iOS で通知が来ない: iOS Safari は標準で通知非対応。ホーム画面追加 + 互換層経由が必要
  • トークン無効化による通知途絶: 14 日経過したまま画面を開かないと、トークンが無効化されて通知が途絶する。画面を開いてトークン再送が走れば復帰
  • OS バッジが古い表示: 内部キャッシュの整合性問題で、実際の未読数とバッジ数値がずれるケース。整合性メンテナンス(運営にお問い合わせください のセレクション既読再同期等)で対応

利用可否(権限別)

通知基盤は基盤機能のため、ユーザー権限軸での直接の操作は無い。機能側の通知設定は トーク通知 を参照。

操作 会員 講師 運営アドミン
プッシュ通知購読 ON / OFF
通知設定(講座 / トークルーム / DM / メンション)
受信解除(プッシュ)

機能詳細(ふるまい)

プッシュ通知の購読

  • ユーザーが画面を開いた際にバックグラウンドで Service Worker が起動 + 通知トークン取得 → サーバーに登録
  • 主経路(Web Push)と互換層経路(PushQuay)の両方を並行して登録する仕組み
  • ユーザーがどちらの経路でトークン登録しているかに依存して、どの経路から通知が届くかが決まる

iOS の PushQuay 経路

  • iOS Safari は PWA 化しないと通知機能を利用できない
  • PWA 化していない iOS ユーザー向けに、別の互換層アプリ(PushQuay)経由で通知を受け取る経路を提供
  • 互換層アプリ側でトークン登録 / 解除を行う運用

通知設定(4 軸)

ユーザーが 4 軸で個別に通知 ON/OFF を制御可能:

  • 講座単位: 特定講座の通知をまとめて ON/OFF
  • トークルーム単位: 講座内の特定ルームの通知のみ ON/OFF
  • DM 通知: ダイレクトメッセージの通知 ON/OFF
  • メンション通知: 自分が言及された投稿の通知 ON/OFF

これらの設定は通知配信の対象判定と、未読カウントへの反映に使われる。

未読バッジ集計

  • 内部キャッシュ(ブラウザ側 IndexedDB)と、サーバーレス処理(クラウド関数)の組み合わせで未読数を効率的に取得
  • BE への直接負荷を抑えつつ、リアルタイム性を確保する構成
  • 大量のトークルーム・コンテンツに対する一括未読チェックを効率化

Service Worker と OS バッジ更新

  • Service Worker が通知イベントを受信
  • 受信時に通知を表示し、内部の未読カウントを更新
  • OS のホーム画面アイコンバッジ(数字バッジ)を更新

通知配信の本文長制限

  • 通知本文の長さは内部仕様により約 2KB で切り詰め
  • 通知タップ後の本文画面では全文を表示

関連ドキュメント


このページの内容を AI に質問しますか?
関連 spec を自動抽出して ChatGPT / Claude などに渡せます。
AI Prompt で開く →