問題タブ [push-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-chrome - Google Chrome サイレント プッシュ通知
Chrome の Web プッシュ API の実装に関するドキュメントを読んでいると、API に「プッシュを受信するたびに通知を表示することを約束する」と書かれていることに気付きました。プッシュメッセージを受け取ります。」
この例をローカルホストに実装した後、cURL を使用してプッシュ通知を正常に送信しました。興味があったので、実際に showNotification 関数を呼び出している行をコメントアウトし、代わりに console.log を挿入したところ、プッシュ通知を実際に送信、受信、および完全に無視できることがわかりました。メインページから制御したグローバルブール値に基づいてそれらを表示するかどうかを制御するために if ステートメントを使用してみましたが、うまくいきました。では、通知を表示する必要があり、サイレント プッシュ通知が利用できないと言う意味を知っている人がいるかどうか疑問に思っていました。
これは単なる目的ではありません。Web アプリでこれらの通知を表示するかどうかを合法的に制御する必要がある可能性があるため、これが実際に可能であれば素晴らしいことです。興味がある場合は、以下のコードを参照してください。
編集: 関連する場合は、Chrome 47 で。
更新: さらに実験した結果、ユーザーが移動してから同じページに再度移動すると、元のグローバル変数を更新できないという明らかな問題が見つかりました。ただし、サービスワーカー自体の変数を使用してこれを回避し、ここで説明する API を使用してメッセージをサービスワーカーに送信し、showNotifications ブール値を切り替えることができました。
javascript - ブラウザにプッシュ通知を送るには?
Push Notification APIとWeb Notification APIについて、ここ数時間読んでいます。また、Google と Apple がそれぞれ GCM と APNS を介して無料でプッシュ通知サービスを提供していることも発見しました。
デスクトップ通知を使用してブラウザーにプッシュ通知を実装できるかどうかを理解しようとしています。これは Web Notification API が行うことだと思います。Chrome でこれを行う方法に関する Google のドキュメントをこちらとこちらで見ました。
今でも理解できないのは次のとおりです。
- GCM/APNS を使用して、Firefox や Safari を含むすべての Web ブラウザーにプッシュ通知を送信できますか?
- GCM 経由でない場合、独自のバックエンドで同じことを行うことはできますか?
これらすべての回答を 1 つの回答にまとめることで、同様の混乱を抱えている多くの人を助けることができると思います。
service-worker - GCM なしで Chrome で新しいプッシュ通知サポートを使用することは可能ですか?
Service Workerで新しい Push API を使用する場合、Google のGCM以外のプッシュ サービスを使用できますか?
service-worker - ネイティブ Web アプリとプログレッシブ Web アプリの間で通知の重複を排除する方法は?
Service Worker による Web プッシュ通知を使用するネイティブ アプリとプログレッシブ Web アプリの両方を使用している場合、ユーザーが Web サイトからの通知の受信をオプトインし、アプリもインストールしている場合に、ユーザーが重複した通知を受信しないようにする方法はありますか? ?
google-chrome - Service Worker 内で pushSubscription.endpoint を読み取るにはどうすればよいですか?
Google Chrome Service Worker を使用して、Web ユーザー向けのプッシュ通知サービスを実装しています。
Chrome の現在のセキュリティ制約ではペイロードを送信できないため、Web サーバーからコンテンツを取得していますが、どのエンド ユーザーがプッシュ ペイロードをクエリしているかをサービス側で特定するのは非常に複雑です。
私の Service-Worker が接続されている yh に関する pushSubscription.endpoint または任意のフォームまたは一意の ID の情報を取得することは可能ですか?
push-notification - Chrome プッシュ通知エンドポイント + ユーザー ID
Chrome のプッシュ通知 (プッシュ API と通知 API) を統合する計画があります。
サブスクリプションが成功すると、Chrome サーバーはクライアントに特別なトークン (「エンドポイント」) を送信します。これを使用して、クライアントを識別し、プッシュ メッセージを送信できます。
ドキュメントから:
後でプッシュ メッセージを送信する必要があるため、エンドポイントはユーザーごとにサーバーに保存する必要があります。
いくつか質問があります:
- サーバー側で「エンドポイント」をどのように管理していますか? AJAX によってサーバーへのサブスクリプションが成功した後、この「エンドポイント」を送信し、DB に保存しますか。または、Cookie に保存してから、ログイン/登録要求後にサーバーに保存します。
- 「エンドポイント」と実際のユーザーをどのように接続するのだろうか?ユーザーはサイトを開き、[許可] をクリックしてプッシュ通知を表示できますが、セッション Cookie がないため、その時点でこの「エンドポイント」を実際のユーザーと識別することはできません。
- この「エンドポイント」には TTL がありますか?
javascript - Chrome プッシュ通知をスケジュールする方法は?
Web サイトのユーザー向けに Chrome プッシュ通知を実装しています。サービスワーカーを介して正常に実行できます。私はこれらの記事/チュートリアルに従っています
- https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=en
- http://www.html5rocks.com/en/tutorials/service-worker/introduction/
これは、今すぐ通知を送信したい場合、つまり将来のスケジュールを設定せずに非常にうまく機能します。
私の問題:
この通知をスケジュールしたいのですが、その日の後半に定期的に発生する可能性があります。これは、cron を使用して行うことができます。しかし、ここに記載されているように、GCM はペイロードを送信しませんhttps://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=enを引用します。
Chrome でのプッシュ API の現在の実装の欠点は、プッシュ メッセージでデータを送信できないことです。いいえ、何もありません。これは、将来の実装では、ペイロード データをプッシュ メッセージング エンドポイントに送信する前に、サーバー上で暗号化する必要があるためです。この方法では、プッシュ プロバイダーが何であれ、エンドポイントはプッシュ メッセージのコンテンツを簡単に表示できなくなります。これにより、HTTPS 証明書の不十分な検証や、サーバーとプッシュ プロバイダー間の中間者攻撃など、他の脆弱性からも保護されます。ただし、この暗号化はまだサポートされていないため、当面はフェッチを実行して、通知の入力に必要な情報を取得する必要があります。
このため、ブラウザーでプッシュ イベントを受信したスケジュールされた通知を特定できません。GCM に複数の通知が送信される可能性があるため。
通知テーブルの最後のレコードを取得しています。つまり、常に最後のレコード データを表示しています。Chromeブラウザでプッシュイベントを受信している通知がわからないためです。
私の質問:
通知をスケジュールしてクライアント/ブラウザに正しい通知を表示する回避策はありますか? ネイティブのクロムプッシュAPIでも可能ですか?
html - 別のドメインから Service Worker を登録する方法
Google Chrome にプッシュ通知を実装しようとしています。別のドメインから Service Worker を登録したい。
例: Service Worker コードはhttps://example.com/にあります。
別のドメインから Service Worker (上記のドメインにある) を登録したい: https://example2.com/
同じことを達成する方法はありますか。Service Workerのページ(例)をiFrameでインクルードしようとすると、登録中にService Workerがエラーをスローしてしまうため
「キャッチされていない (約束された) DOMException: 登録に失敗しました - 許可が拒否されました」
android - Chromeプッシュ通知プッシュデータを取得する方法は?
私はGoogleのこのチュートリアルに従っています:
https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web
試してみましたが、プッシュ通知でデータを取得する方法がわかりません。
たとえば、次のようなデータを取得したいとします。
これdata
は、Google Cloud Messaging にプッシュしたフィールドの 1 つです。