如何在iOS中保存PWA状态

时间:2018-01-18 23:06:21

标签: ios progressive-web-apps

我意识到iOS目前还不完全支持Progressive Web Apps,但在支持Service Workers和Web App Manifest标准之前,我希望该应用程序能够在相同的状态下关闭并重新打开。我应该提一下,目前我的应用程序打开时没有导航栏,因此在这方面确实感觉像是一个本机应用程序,但是我错过了一件我认为可能有益且可能的事情。

以下是一个例子:

发生了什么:

  1. 从主屏幕图标
  2. 打开PWA
  3. 打开默认开始页面
  4. 导航到PWA中的特定页面
  5. 返回主屏幕
  6. 从主屏幕图标
  7. 打开PWA
  8. 打开默认开始页面
  9. 我想发生什么:

    1. 从主屏幕图标
    2. 打开PWA
    3. 打开默认开始页面
    4. 导航到PWA中的特定页面
    5. 返回主屏幕
    6. 从主屏幕图标
    7. 打开PWA
    8. 在#3
    9. 中打开从上面导航的页面

      几个星期前,有人说他们已经完成了这个,但是再也找不到了。我意识到没有“官方”的方式来做到这一点,但想知道是否有任何诀窍来实现这一目标。

      任何想法或经验都将不胜感激。

3 个答案:

答案 0 :(得分:1)

好消息!此错误已在iOS 13中修复

iOS 12改进了PWA中的持久状态,这意味着当您关闭应用程序时,返回到应用程序时它将处于相同状态。但是,这带来了另一个错误:强制退出应用程序仍然无法使应用程序恢复到新的状态。

在iOS 13和iPadOS中,这些错误现已完全修复,并且最终用户的应用程序生命周期与本地应用程序相同。

此操作不需要任何特殊设置:通过升级到iOS 13 / iPadOS,您应该会立即看到改进。

参考:https://wespeter.com/posts/ios13-pwa-improvements/

答案 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