我意识到iOS目前还不完全支持Progressive Web Apps,但在支持Service Workers和Web App Manifest标准之前,我希望该应用程序能够在相同的状态下关闭并重新打开。我应该提一下,目前我的应用程序打开时没有导航栏,因此在这方面确实感觉像是一个本机应用程序,但是我错过了一件我认为可能有益且可能的事情。
以下是一个例子:
发生了什么:
我想发生什么:
几个星期前,有人说他们已经完成了这个,但是再也找不到了。我意识到没有“官方”的方式来做到这一点,但想知道是否有任何诀窍来实现这一目标。
任何想法或经验都将不胜感激。
答案 0 :(得分:1)
好消息!此错误已在iOS 13中修复
iOS 12改进了PWA中的持久状态,这意味着当您关闭应用程序时,返回到应用程序时它将处于相同状态。但是,这带来了另一个错误:强制退出应用程序仍然无法使应用程序恢复到新的状态。
在iOS 13和iPadOS中,这些错误现已完全修复,并且最终用户的应用程序生命周期与本地应用程序相同。
此操作不需要任何特殊设置:通过升级到iOS 13 / iPadOS,您应该会立即看到改进。
答案 1 :(得分:1)
我不知道您是否使用任何客户端路由库,但是我们意识到的是,iOS 12重新加载后导航到“登录”页面。因此,我们对angularjs所做的就是在过渡时缓存状态,然后在'$ stateChangeStart'上读取它
if (toState.name === 'login') {
event.preventDefault();
var appState = $rootScope.$localStorage.applicationState;
if (appState && appState.state && appState.state.name && appState.params) {
$state.go(appState.state.name, appState.params);
} else {
$state.go('main.orders');
}
} else {
$rootScope.$localStorage.applicationState = { state: toState, params: toParams };
}
答案 2 :(得分:1)
iOS / iPadOS 14现在可用,它带来了重大改进:
从iOS 11.x到iOS 13,每个已安装的PWA都有其存储空间 与Safari和其他PWA安装完全隔离 相同的清单。
我已经在iOS和iPadOS 14中找到了,这种行为已完全改变:
PWA与Safari共享Service Worker的注册和CacheStorage。此新行为与您在Android上发生的情况相符 安装PWA。但是,Cookie,Web存储和IndexedDB是 仍然与Safari和其他相同图标分离 PWA。也就是说,当您打开PWA时,部分存储将可用 在主屏幕上。
在安装某些PWA时,可以在独立体验上继续进行会话。例如,在Pinterest上,如果已登录 在浏览器中,您也已在App中登录,但是 有一些小故障(我认为是由于部分存储)。我是 尚不确定如果cookie不同(为什么它们在其中,为什么会发生) 我的测试)
来源:Safari on iOS 14 and iPadOS 14 for PWA and Web Developers