2016-04-09 6 views
0

私は、私たちのサーバーからプッシュイベントを受信できるサービスワーカーを抱えています。現在のバージョンのChromeでは、受信した通知内のデータペイロードはサポートされていません。したがって、プッシュイベントが発生した後、サーバーから通知(タイトル、テキスト、..)に関する情報を取得する必要があります。ウェブプッシュ通知サービスワーカーデザイン

ユーザーが同じ通知を2回も受け取らないようにするには、まだ受信していない「保留中」通知のIDを配列に保存します。サービスワーカーがサーバにpingを実行するたびに、アレイの最後の項目がフェッチされ、アレイから削除されます。

通知をフェッチしている間に送信中またはサービスワーカーに例外がスローされた場合、サービスワーカーは1つの通知遅れとなります。新しいペンディング通知が1つしかない場合、配列には常に2つの項目が含まれます。

どうすればよいですか?

答えて

1

イベントがServiceWorkerによってキャッチされると、通知はGCMに対して送信されたとみなされます。 (すなわち、よく取り出された通知が表示されたか、またはフェッチプロセス中にエラーが発生した)かどうかに関係なく、

しかし、サーバーから各通知コンテンツをフェッチするときに、サーバー側で「フェッチ済み」フラグを処理できます。このようにしてフェッチがnペイロードを返した場合、ServiceWorkerはpushイベントでnself.registration.showNotification()というイベントを生成できます。

最後に、error occurredがGCMに通知を送信している場合(Internal Server Error)、GCMへのリクエストを再試行する必要があります。しかし、あなたのリクエストが成功したにもかかわらず、ServiceWorkerがpushイベントを受け取ったことがない場合は、通知が失われたとみなす必要があります。