Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每次打开PWA时刷新页面-PWA_Javascript_Progressive Web Apps - Fatal编程技术网

Javascript 每次打开PWA时刷新页面-PWA

Javascript 每次打开PWA时刷新页面-PWA,javascript,progressive-web-apps,Javascript,Progressive Web Apps,我有一个PWA,用户可以兑换物品。问题出现在iOS上的PWA上,因为他们不通信,所以用户可以兑换两次(一次在浏览器上,一次在PWA上;如果他们偷偷摸摸的话),因为PWA不会更新浏览器上发生的事情 我的解决方案是,每次人们在iOS上使用PWA并打开应用程序时,它都会重新加载,以使用与浏览器相同的信息进行更新 首先,我创建了一个函数来检测用户是否在iOs上,并创建了一个函数来检测用户是否在单机上,以了解他们是否在PWA上,因此将我创建的这两个函数结合起来: if(is_iOS() &&

我有一个PWA,用户可以兑换物品。问题出现在iOS上的PWA上,因为他们不通信,所以用户可以兑换两次(一次在浏览器上,一次在PWA上;如果他们偷偷摸摸的话),因为PWA不会更新浏览器上发生的事情

我的解决方案是,每次人们在iOS上使用PWA并打开应用程序时,它都会重新加载,以使用与浏览器相同的信息进行更新

首先,我创建了一个函数来检测用户是否在iOs上,并创建了一个函数来检测用户是否在单机上,以了解他们是否在PWA上,因此将我创建的这两个函数结合起来:

if(is_iOS() && isInStandaloneMode()){
   window.location.reload(true)
}
但是这只创建了一个重载循环,所以我甚至一次都看不到信息


是否有一种方法可以在每次打开PWA时刷新页面?

为什么您要在客户端而不是在服务器上兑换?通过在服务器上执行此操作可以防止重复,因为您可以检查是否已兑换。我在服务器上执行此操作,问题是,如果人们在web上兑换某些东西,并且刷新所有内容都很好,但是如果他们安装了PWA并转到PWA,那么这些东西将“未兑换”因为PWA和safari不在iOSAdd代码服务器端进行通信,服务器端会检查它是否已被赎回,并以消息(或重新加载页面)进行响应,而不是让它通过。如果您希望在启动/打开时更新它,则需要添加代码以检查状态,socket.io将适合,因为它将通过连接等,然后你可以提供一个状态回来,而不需要专门寻找刚刚打开的应用程序再次。你可以使用本地存储你应该设置一些标志存储后,你刷新页面,并检查如果该标志是在本地存储前刷新