如何检查应用程序是不是已更新?
Posted
技术标签:
【中文标题】如何检查应用程序是不是已更新?【英文标题】:How check that the application has been updated?如何检查应用程序是否已更新? 【发布时间】:2019-03-03 23:32:52 【问题描述】:有一个不断运行的 ios 应用程序。 在应用程序运行时,iOS 或 MDM 服务器可以将应用程序更新为新版本的应用程序。 我需要延迟一些时间来检测正在运行的应用程序中的应用程序更新并完成应用程序的运行版本。 可以这样做吗?
【问题讨论】:
不清楚您所说的“从正在运行的应用程序检测应用程序更新”是什么意思。如果您的意思是“检测应用程序何时将被更新”,那是不可能的。应用程序将被终止,但您不知道原因(在许多情况下,您甚至不知道它发生了)。此外,不清楚您所说的“不断运行的 iOS 应用程序”是什么意思。没有支持的方式来拥有这样的应用程序。如果您的意思是您想在启动时知道自上次运行以来发生了更新,那非常简单。 “另外,您所说的“不断运行的 iOS 应用程序”是什么意思也不清楚。在单应用程序模式下,应用程序会一直运行下去。 【参考方案1】:您可以通过以下方式查看应用iOS版本:
var version = Bundle.main.infoDictionary?["CFBundleShortVersionString"]
然后在 AppDelegate 实现 force_version_update 具有延迟时间的函数。
很遗憾,只有用户直接从 AppStore 更新 IOS 应用
【讨论】:
应用程序是否有可能获得对应用程序本身二进制文件的读取权限?考虑到二进制的校验和,它可以解决我的问题。【参考方案2】:我通过以下步骤在我的一个应用中实现了这一点:
-
在 UserDefaults 中存储当前版本
使用 Rest API 从后端/服务器检索最新版本
比较两者,如果不相同,请用户更新应用程序
希望这会有所帮助。
【讨论】:
这是另一种情况。在我的例子中,应用程序将在没有用户干预的情况下准确地自我更新,因为根本不允许用户做任何事情。 您的问题解决了吗?如果没有,您是否尝试实施applicationWillTerminate(_:)
? Refer documentation
不,问题没有解决。问题不是完成应用程序,而是确定操作系统已经更新了应用程序。据我了解,更新是在应用程序运行时在后台进行的。只有这样,如果应用程序不活动,操作系统才会重新加载应用程序。但如果应用程序一直处于活动状态,则不会重新启动。目前,我们正在从 MDM 服务器远程重启整个设备。但这是一个糟糕的决定。以上是关于如何检查应用程序是不是已更新?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 s-s-r Nuxt 应用程序中的服务器构建是不是已更新
如何发送没有任何数据的 POST 请求,以检查该端点是不是已启动?
XCUITest - 如何检查 webview 是不是已更新其内容?