macOS のウェブアプリのネイティブ通知アトリビューション

Marijn Kruisselbrink
Marijn Kruisselbrink
Dan Murphy
Dan Murphy

公開日: 2026 年 7 月 16 日

Chrome 152 以降では、macOS にインストールされたプログレッシブ ウェブアプリ(PWA)の通知は、Google Chrome ではなく PWA 自体にネイティブに帰属します。

これにより、ウェブアプリが macOS により統合されたように感じられるようになり、ユーザー エクスペリエンスが大幅に向上します。ただし、通知権限の処理方法と特定の通知 API の動作にも重要な変更が加えられます。

変更内容

以前は、PWA から送信されたすべての通知は、OS レベルで Chrome に帰属していました。macOS 通知センターでは、[Google Chrome] の下に表示され、Chrome アイコンが使用されていました。通知を無効にするには、macOS のシステム設定ではなく、Chrome 内のコントロールを使用する必要がありました。

通知の帰属により、サイトが PWA としてインストールされると、macOS は通知用の個別のアプリケーションとして扱います。これは、新しくインストールされた PWA と、ユーザーが以前にインストールした PWA の両方に適用されます。

特典:

  • ブランド アイデンティティ: 通知には、 macOS 通知センターとバナーに PWA 独自の名前とアイコンが表示されます。
  • 使い慣れたユーザー コントロール: これらのアプリの通知コントロールは、ユーザーが想定する場所に(Chrome ではなく macOS のシステム設定に) 正確に表示されるようになりました。
  • 詳細な制御: ユーザーは、個々の PWA アプリの通知 設定(アラート スタイル、ロック画面の動作など)を管理できます。
  • フォーカス モード: macOS のフォーカス プロファイル(サイレント モード)で、PWA を個別に許可またはミュートできます。
Chrome アイコンとともに「Google Chrome」と表示されます。
以前: Chrome アイコンを使用して [Google Chrome] に帰属。
PWA のカスタム アイコンとともに「PWA 名」に帰属します。
現在: PWA のカスタム アイコンを使用して [PWA 名] に帰属。

新しい権限フロー

macOS は PWA を個別のアプリとして扱うため、PWA は通知を表示する前に OS レベルの通知権限を取得する必要があります 。これにより、新規ユーザーと既存ユーザーの両方で権限フローが変更されます。

新規ユーザー(初回権限のリクエスト)

ユーザーが PWA をインストールし、インストール後にサイトが通知権限をリクエストする場合:

  1. Chrome はブラウザレベルの権限プロンプト(アドレスバーからのプルダウン)をスキップ します。
  2. Chrome は、PWA のmacOS システム権限プロンプト をすぐにトリガーします。
macOS のシステム権限ダイアログ: 「PWA 名」が通知を送信しようとしています。通知には、アラート、サウンド、アイコンバッジなどが含まれる場合があります。また、[許可しない] ボタンと [許可] ボタンが表示されます。
インストールされた PWA の macOS システム権限ダイアログ。
PWA の権限プロセスを示すフローチャート。「PWA Requests Permission」で始まり、「Installed?」という決定につながります。「はい」の場合、Chrome のプロンプトはスキップされ、macOS のシステム プロンプトが表示されます。「いいえ」の場合、Chrome ブラウザのプロンプトが表示され、ユーザーが PWA をインストールすると、macOS システムのプロンプトが表示されます。
PWA 通知権限プロセスのフローチャート。

既存のユーザー(移行パス)

ユーザーが Chrome でウェブサイトに通知権限を付与し、PWA をインストールした場合(またはすでにインストールしている場合)でも、PWA に OS レベルの権限を付与する必要があります。

この移行をできるだけスムーズに行うには:

  1. PWA が最初に通知を送信しようとすると、macOS にシステム権限プロンプトが表示されます。
  2. ユーザーが承認すると、通知は引き続きシームレスに機能します。
  3. ユーザーがこのプロンプトを無視または閉じた場合、PWA にアプリ内インジケーター (通常はアプリのタイトルバーまたはメニュー)が表示され、macOS のシステム設定に移動して権限を手動で有効にするよう促します。
インストール済みの PWA のプロンプトで、Mac のシステム設定で通知がオフになっていることをユーザーに知らせ、その設定に移動するボタンを表示します。
macOS のシステム設定に移動するようユーザーに促す PWA のアプリ内プロンプト。
通知のオン / オフを切り替えるオプションがあるアプリの設定と、通知を有効にするシステム設定を指すポインタ。
macOS のシステム設定を開くインジケーターが表示された Chrome のアプリ設定。
ブラウザ内アプリで、Mac のシステム設定で通知がオフになっていることをユーザーに知らせるメッセージを表示し、システム設定に移動するボタンを表示します。
macOS のシステム設定に移動するようユーザーに促すブラウザ内プロンプト。

デベロッパーへの影響: macOS での requireInteraction の非推奨化

macOS では、通知がユーザーが閉じるまで画面に表示されるか (「永続的」) 、自動的に消えるか (「一時的」) は、macOS のシステム設定の アプリごとのユーザー制御設定 です。

この OS の設計により、帰属 が有効になっている場合、 Chrome は macOS の Notification API の オプションを尊重しなくなります。requireInteraction

コードへの影響:

アプリが requireInteraction: true に依存して重要な通知を画面に表示している場合、macOS では保証されなくなります。以下の代替手段があります。

  • 通知が一時的(一時的 )である可能性があることを前提にアプリを設計します。
  • 永続的な通知が必要なユーザーには、PWA の 通知アラート スタイルを「永続的」System Settings > Notifications > [Your PWA]設定するよう促します。
macOS のシステム設定。アラート スタイルの設定が [一時] と [永続] になっていることがハイライト表示されている。
PWA の macOS システム設定(アラート スタイル設定(一時的と永続的)が表示されています)。

デベロッパーへの影響: App Badging API に通知権限が必要

App Badging API を使用すると、ウェブアプリはアプリケーション アイコンにバッジを設定できます(たとえば、 未読メッセージ数などを表示)。macOS では、アプリアイコンのバッジは技術的にアプリケーションの通知設定に関連付けられています。PWA に独自のネイティブ通知 ID が設定されるようになったため:

  • 必要な権限: Dock アイコンにバッジを表示するには、PWA で OS レベルの通知権限を 有効にする必要があります。これは macOS プラットフォームの標準に沿っており、Safari でウェブアプリの Badging API が処理される方法と一致しています。
  • サイレント エラー: ユーザーが "Badge app icon" を System Settings > Notifications > [Your PWA]で無効にするか、通知 権限を完全に拒否した場合でも、navigator.setAppBadge() の呼び出しは JavaScript で成功しますが(エラーは発生しません)、バッジは Dock に表示されません。アプリがバッジに依存している場合は、通知権限をリクエストしてバッジが表示されるようにしてください。

エンタープライズ管理への影響

macOS デバイスを管理し、通知権限を事前に付与したいエンタープライズ管理者向け:

  1. Chrome ポリシー: PWA のオリジンに権限を付与するには、Chrome ポリシー (NotificationsAllowedForUrls) を構成する必要があります。
  2. macOS ポリシー: さらに、macOS 構成 プロファイル(MDM)をデプロイして、PWA のバンドル ID(App Shim)に通知権限を事前に付与する必要があります。

両方のポリシーが設定されていない場合、ユーザーには OS レベルでプロンプトが表示されます。

デベロッパー向けのベスト プラクティス

  1. 権限ステータスを確認する: 通知を送信する前に、必ず Notification.permission を確認してください。
  2. コンテキストに応じたプロンプト: ウェブ レベルで権限が付与されているのに通知が表示されない場合(OS レベルの 権限が取り消された場合に発生する可能性があります)、macOS のシステム設定に移動するようユーザーに促します。
  3. 一時的な通知に備える: macOS の重要なユーザーフローでrequireInteraction に依存しないでください。