たとえば、プログレッシブ Web アプリとして Android で目覚まし時計アプリを作りたいとします。
ネイティブ アラーム アプリのように、アクティブな Web ページがなくても、選択した時間に通知する必要があります。
最初は、プッシュ API を使用することを検討しました。もちろん、オフライン中はプッシュメッセージが届きません。また、プッシュ メッセージの到着時刻は、目覚まし時計としては十分に正確ではありません。
ネットワークに接続していなくても、その時点で通知を受けることはできますか?
たとえば、プログレッシブ Web アプリとして Android で目覚まし時計アプリを作りたいとします。
ネイティブ アラーム アプリのように、アクティブな Web ページがなくても、選択した時間に通知する必要があります。
最初は、プッシュ API を使用することを検討しました。もちろん、オフライン中はプッシュメッセージが届きません。また、プッシュ メッセージの到着時刻は、目覚まし時計としては十分に正確ではありません。
ネットワークに接続していなくても、その時点で通知を受けることはできますか?
あなたが説明しているのは、プッシュ通知にはネットワーク接続が必要であるという点で、プッシュ通知ではなく定期的なバックグラウンド同期に密接に関連する機能です。定期的なバックグラウンド同期には、ネットワークに依存しないという利点があります。(定期的なバックグラウンド同期は現時点では単なる提案であり、どのブラウザーにも実装されていません。)
残念ながら、あなたのユースケースでは、定期的なバックグラウンド同期は、目覚まし時計を便利にするために必要な正確な時間にトリガーする必要があるイベント用に明示的に設計されていません。元の提案に従って:
定期的な同期ではないもの
定期的な同期は正確なアラーム API ではありません。スケジューリングの粒度はミリ秒単位ですが、使用頻度とデバイスの状態 (バッテリー、接続、場所) によっては、イベントの起動が数時間遅れる場合があります。
実行中の同期の結果は、「重大」ではなく「有益」である必要があります。ユースケースが重要な場合は、1 回限りの同期またはプッシュ API が要件を満たす場合があります。
最新のモバイル オペレーティング システムには、デバイスがアイドル状態であると見なされたときの電力使用量を最小限に抑えるためのさまざまな最適化が組み込まれています。これには、定期的なタスクを実行時に細かく制御する代わりに、定期的なタスクを時差バッチで実行することが含まれます。