0

サービスワーカーの同期は、Android chromeのケースで起動しません何が欠けていますか??? ここでも同じです:オフライン中にページがロード/リフレッシュされると、JavaScript バックグラウンド同期が機能しなくなります

  1. 開発用のUSBケーブルを抜きます(chrome devツール用)
  2. アンドロイドのホームボタンを押す
  3. 電源ボタンを押してスリープ (黒い画面)
  4. それから私は5分待ちます(少なくとも)
  5. 次に、電源ボタンを押して目を覚まします
  6. 次に、myapp を押してアプリを起動します (アプリは閉じていませんが、スリープ状態に設定されています)
  7. 次に、デバッグ用にUSBケーブルを接続します
  8. 次に、いくつかのボタンをクリックして同期を開始します。その後、わかりました---

コンソールで「REGISTER」ですが、電源ボタンをもう一度クリックすると(黒い画面)、「SYNC」イベントが発生せず、電源ボタンをもう一度クリックすると、起動するか、wifiをオフにしてからwifiをオンにします-その後、起動します上

そして、コンソール「REGISTER」と「SYNC」に表示されます

30 分経過すると、登録された同期が削除されます

クライアント側JS

var id = 'background-sync-' + (new Date()).getTime() + $.uniqid(6);    
let postData = {
                        'type': 'background-sync',
                        'uuid': id,
                    };
                    registration.active.postMessage(postData);

サービスワーカー側

self.addEventListener('message', function (event) {

    //console.log('message=' + event.data.type);
    if (event.data.type === 'background-sync') {

        registerSync(event.data.uuid, event.data);
    }
});

self.addEventListener('sync', function (event) {

    console.log('SYNC');
    //event.waitUntil(syncIt(event.tag));
});


function registerSync(uuid, data) {

    if (data != undefined && data != null) {

        let id = data.id;

        //append data to storage
        syncStore[id] = data;
        //this is important
        syncStore[id]['sending'] = false;
    }

    console.log('REGISTER');
    //console.log(data);
    //console.log(self.registration.sync.getTags());

    self.registration.sync.register(uuid)
        .then(function () {
        })
        .catch(function (err) {
            return err;
        });
}
4

1 に答える 1