防止PWA在访问时重新启动

时间:2017-07-21 10:53:27

标签: javascript stripe-payments progressive-web-apps samsung-galaxy

我正在开发PWA并在付款页面上遇到此问题。基本上是:

情景1

  1. 用户填写付款表
  2. 点击提交,被重定向到第三方付款页面 - 条纹(这会在Chrome手机上打开一个标签,无法调整以打开桌面上的模式)
  3. 付款成功,第三方页面重定向到PWA,自动重启。
  4. 问题是我有一个无法显示的成功页面,因为重新启动时我失去了我所处的整个状态。

    场景2

    1. 用户填写付款表
    2. 点击手机上的按钮/主页按钮
    3. 从桌面上再次打开应用。有时应用程序会在之前的状态下打开(表单已填满),有时它会重新启动,再次丢失所有内容。
    4. 我能做些什么来防止这种情况发生?我知道当你从桌面打开PWA图标时,你基本上是打开chrome。但是如果应用程序已经打开(并且它仍然在最近的选项卡中可见),我有什么办法可以阻止它重新启动吗?我想手机会自动将其关闭。

      可能的解决方案:

      我现在能想到的唯一一件事就是将所有内容存储在localStorage中并尝试在刷新时重新加载。通过这种方式,我可以确保即使它关闭并再次打开,我仍然保持之前的状态。

      有趣的是,场景1 (这让我最困扰)只发生在三星Galaxy S7上(直到现在测试了6-7台设备,它是唯一一个重现的设备)。 Chrome版本在所有版本上大致相同。

      有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

因此保存到本地存储例程有效。我传递给Stripe的回调函数被调用,但是在PWA重新启动后立即被调用。

所以我所做的就是将我的状态保存在localStorage中,这是回调中的第一件事,标志为paymentInProgress,然后尝试在服务器上调用save并显示成功页面。如果一切都在中间崩溃,应用程序重新启动并在componentDidMount我检查localStorage数据和paymentInProgress === true标志。

我仍然很好奇是否有其他解决方案可以防止页面从头开始重新加载。

相关问题