質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

1回答

991閲覧

サイトからのWebプッシュ通知を許可済みかどうか判定したい

nakashima723

総合スコア11

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

1クリップ

投稿2017/11/02 15:28

編集2017/11/02 15:48

PC用Webブラウザ、およびAndroid端末向けのWebプッシュ通知において、「現在そのサイトを見ているユーザーが、そのサイトからのプッシュ通知(Webブラウザ通知)を許可済みかどうか」を判定することは可能でしょうか?

すでに許可済みのサイトで「許可する」「拒否」のダイアログが出ないことを考えると、どこかでその判定がされていることは分かるのですが、サイトの表示内容に反映させるため、その情報をなんらかの形で取得したいと考えています。

また、もしOnesignal・Push7といったSaaSの中で、この状態の取得をより簡単に行えるものがあれば教えていただきたいです。

使い方としては、以下のような機能を実現したいと考えています。

・許可済みであれば、「通知を受け取る」ボタンの表示を「通知を解除する」に切り替える
・通知を許可しているユーザーだけが見られるページを作る

LocalStorageにより、単純に「通知を受け取る」ボタンを押したかどうかを記録することも考えましたが、ブラウザ毎にCookie削除時の挙動が違うこと、通知を誤って「拒否」した場合のリカバリ等を考えると、実際の状態を取得できるならそれが望ましいと考えています。ご回答いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ChromeとFirefoxでは、navigator.permissions.queryでプッシュ通知が許可されているかどうかを確認できます。

js

1navigator.permissions.query({name: 'notifications'}).then(status => { 2 if (status.state === 'granted') 3 console.log('許可済み'); 4 else if (status.state === 'prompt') 5 console.log('ユーザ確認待ち'); 6 else // if (status.state === 'denied') 7 console.log('拒否済み'); 8});

厳密には、通知を許可するnotificationsと、プッシュ通知の購読を許可するpushの2種類のパーミッションが定義されていますが、現状ではnotificationsのパーミッションがpushに同期されますので、notificationsをチェックすれば十分になっています。

投稿2017/11/16 07:45

othersight

総合スコア356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nakashima723

2017/11/16 08:13

ありがとうございます!試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問