dog*_*_uk 6 facebook service-worker progressive-web-apps
遇到了一个问题,我们的某些用户从我们的网站的Facebook浏览器中坐着一辆越野车。
问题是:Facebook App用户在访问我们在FB上共享的页面时,正在FB浏览器上获得“您的离线页面”。
该错误似乎是由于旧版本的Google Workbox(3.6.1)使用Chrome 75自动返回了FB应用程序中的“您处于离线状态”页面。
对Workbox的引用是在服务工作者中进行的,因此当我们更新Workbox版本(解决了该问题)时,某些用户仍旧缓存了旧版本。
如果用户清除其FB应用程序缓存或重新安装FB,那么一切正常,他们可以看到我们的内容。但是我们想尝试强迫软件更新而不要求他们这样做。
要从FB浏览器中清除旧的Service Worker,我们尝试了以下操作:
<script>
"use strict";
console.log("Service Worker Registration");
function isFacebookApp() {
var ua = navigator.userAgent || navigator.vendor || window.opera;
return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
}
if ("serviceWorker" in navigator) {
if(isFacebookApp() == true) {
console.log("Service Worker Registration: using v2, via Facebook App");
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for(let registration of registrations) {
console.log("Service Worker Registration: "+registration);
registration.unregister();
}
});
} else {
console.log("Service Worker Registration: using v2, not via Facebook App");
window.addEventListener("load", () => {
navigator.serviceWorker.register("/sw.js");
});
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
但是,我们的分析表明,在“您处于离线状态”页面上,我们仍然获得点击率,并且仍在收到用户的报告,他们可以关注我们文章的链接。
有人可以帮忙吗?有没有一种方法可以强制FB的应用程序内浏览器更新缓存,并让我们的用户使用正在运行的Service Worker?
更新资料
到目前为止,我们已经尝试:
skipWaiting()在服务人员的代码/offline页面导致net::ERR_FAILED错误我们的分析表明:
什么都没做:我们的服务人员或其他人员仍在返回“离线”页面...
这是 Chrome/Chromium WebView 中的一个错误,可在https://bugs.chromium.org/p/chromium/issues/detail?id=977784中跟踪
此时应该广泛推出修复程序。
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |