在 android chrome 中,service worker sync 不会触发我错过了什么???同样的事情:JavaScript Background Sync Stops Working if Page is Loaded/Refreshed while offline
- 拔下 USB 电缆进行开发(用于 chrome 开发工具)
- 按下 android 主页按钮
- 按电源按钮睡眠(黑屏)
- 然后我等5分钟(至少)
- 然后我按下电源按钮唤醒
- 然后我推动 myapp 唤醒应用程序(应用程序未关闭但设置为睡眠)
- 然后我插入 USB 电缆进行调试
- 然后我点击一些按钮来触发同步,然后我看到---
在控制台中“注册”但如果我再次单击电源按钮(黑屏)然后我再次单击电源按钮则不会触发“同步”事件 - 然后它会唤醒或者我关闭 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;
});
}