【问题标题】:IBM Worklight - How can I execute JavaScript code before updating the application?IBM Worklight - 如何在更新应用程序之前执行 JavaScript 代码?
【发布时间】:2013-08-03 23:08:09
【问题描述】:

当有新的软件更新可用时,如果用户将数据存储在 jsonstore 中,我需要允许用户在应用软件更新之前将它们提交到服务器,这样他/她未提交的更新就不会丢失。 目前用户在安装更新之前无法使用该应用程序。

有没有办法在更新应用程序之前执行 JavaScript 代码,以便我可以在执行更新安装之前初始化 jsonstore、获取数据并发送到适配器?

【问题讨论】:

  • 您可以在 wlInitOptions 文件中,在 WL.Client.init 之前。不过没试过
  • 不,没有合适的钩子可用。
  • 对不起,我没有添加太多的场景细节。
  • 我要介绍的场景是:用户在没有连接的情况下登录应用程序并开始创建/更新记录,因此我们将它们保存在 jsonstore 中。第二天,用户再次登录应用程序(现在已连接)并收到更新应用程序的屏幕,但如果他这样做了,并且此更新对于给定的 jsonstore 集合有一些不同的搜索字段,他将无法初始化更新安装后的集合,因此无法将数据从 jsonstore 推送回服务器。
  • 我的回答如下;没有机制允许这样做。您需要使您的代码对集合中的此类更改更具弹性。

标签: ibm-mobilefirst jsonstore worklight-runtime


【解决方案1】:

没有可供开发人员使用的编程挂钩,以便在直接更新请求之前执行操作。

也就是说,直接更新不会在运行时本身发生,而只是:

  1. 应用程序初始化时
  2. 从后台返回到前台时

所以据我了解,只有上面的第二种情况没有得到处理。
在第一种情况下,用户尚未执行任何数据操作。


不确定我是否完全理解这种情况,因为您没有详细说明,但是...
一个可能的解决方案是使用Cordova Events API (pause, resume)

理论上,您可以检测到应用程序的任务是移至后台的情况,并希望在此之前将用户数据保存在辅助集合中。

因此,当应用程序恢复但直接更新请求已到达并且主要集合之前未保存/与服务器同步(检查一些标志,也许?)然后您可以使用辅助集合恢复应用程序状态;尽管有直接更新请求,但基本上使用“未保存”的用户数据恢复应用程序。然后,您/用户可以保存和同步数据。

或者类似的东西。
也欢迎submit a feature request

【讨论】:

    【解决方案2】:

    我们看到“unload”和“beforeunload”事件在 DirectUpdate 之前触发。如果数据在那个时间点仍然在内存中可用,也许这是代码的一个选项?

    WL 5.0.6.1 Android - Direct Update keeps Native/Cordova resources active/in memory (e.g. BusyIndicator) but reference is lost

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      相关资源
      最近更新 更多