首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript背景同步android电源按钮

javascript背景同步android电源按钮
EN

Stack Overflow用户
提问于 2021-01-28 17:16:59
回答 1查看 88关注 0票数 0

服务人员同步不会在android的情况下触发IM丢失了什么?在这里同样的事情:JavaScript Background Sync Stops Working if Page is Loaded/Refreshed while offline

debugging

  • then

  • 拔出用于开发的usb电缆(用于chrome开发工具)

  • 按下

  • 按钮用于睡眠(黑屏幕)

  • ,然后我在usb电缆中等待5分钟(至少)

H 110,然后按电源按钮以唤醒H 211H 112,然后按下myapp以唤醒应用程序(应用程序未关闭但被设置为睡眠)H 213/code>H 114然后我在usb电缆中单击某些按钮以启动同步,然后我看到-H<217/code>。

在控制台中,如果我再次单击电源按钮(黑色屏幕),然后再次单击电源按钮,它会醒来,或者我关闭wifi,然后打开wifi,则不会触发“注册”事件,但不会触发“同步”事件。

然后在控制台“寄存器”和“同步”中看到。

如果我花了30分钟,那么注册同步就会被删除。

客户端JS

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

服务业工人一方

代码语言:javascript
复制
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;
        });
}
EN

回答 1

Stack Overflow用户

发布于 2021-01-29 17:09:33

没有解决办法。即使是背景周期同步也不起作用。因此,我已经做了工作-发送定期的文章,如果可能的话,并使用background.sync作为离线数据同步。问题是,如果我单击电源按钮一次,然后同步请求设置为等待,如果第二次,那么同步请求将发送到服务器。

解决方案代码:

代码语言:javascript
复制
if( this.online ){

    let self = this;
    $.post(self.requestUrl, self.params, function (returnData) {

        if( callback )
        callback(returnData);
    }).fail(function () {

        window.backgroundSync(self.requestUrl, self.params, callback, self.storeData);
    });
}
else {

    window.backgroundSync(this.requestUrl, this.params, callback, this.storeData);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65942049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档