自iOS 11以来,我们的一个网络应用程序一直在运行,但是当作为应用程序添加到主屏幕时仅。
它允许为用户选择的语言离线查看使用ApplicationCache清单缓存的文档。
当用户选择新语言时会出现问题。
我们使用document.cookie将语言令牌(即en_GB或de_DE)保存到cookie,然后我们告诉appcache寻找更新。服务器查看cookie中的语言标记,并向下发送特定于语言的cache.manifest文件。
当用户更改语言时,这是JS
function setLanguage(chosenLanguage) {
//...
this.setCookie("language", chosenLanguage, 10);
window.applicationCache.update();
}
this.setCookie 使用 document.cookie 更改Cookie值,以及以天为单位的到期时间。
这在桌面和移动设备上运行良好,即使在iOS 11 Safari上也是如此。
iOS 11上的主屏幕应用程序模式除外。
通过每次更新cookie时设置唯一ID,我们可以在Web Inspector控制台中查看每个点设置的唯一ID,并将它们与服务器收到的内容进行比较。
我们发现主屏幕应用程序正在发送在 Safari 中创建的Cookie。不是在主屏幕应用程序中使用document.cookie创建的那个。我们的任何请求都不会发送该cookie。
不仅如此,如果我们回到Safari浏览器版本并更改语言,然后交换回主屏幕应用程序,它会使用新语言发送更新的safari cookie,但仍然可以从document.cookie中读取显示我们之前在应用中设置的数据。
我想知道的是:是否有其他人遇到过这个问题,有没有人知道修复它?