iOS 是不是具有与 Android 一样的应用内更新功能?

Posted

技术标签:

【中文标题】iOS 是不是具有与 Android 一样的应用内更新功能?【英文标题】:Does iOS has In App updates like feature as of Android?iOS 是否具有与 Android 一样的应用内更新功能? 【发布时间】:2020-05-19 11:42:02 【问题描述】:

我已经为 androidios 开发了一个移动应用程序。现在每周我们都会发布 2 个更新。大多数情况下,Android 和 iOS 用户会停止应用程序的自动更新。但是,如果有关键更新或错误修复或新功能,那么我们必须要求用户更新应用程序以获得更好的可用性。为此,我发现 Android 有 In App Updates API。它说,我引用

让您的应用在用户的设备上保持最新状态,让他们能够尝试新功能,并从性能改进和错误修复中受益。尽管某些用户在他们的设备连接到不按流量计费的连接时启用了后台更新,但可能需要提醒其他用户进行更新。应用内更新是 Play Core 库的一项功能,它引入了新的请求流来提示活跃用户更新您的应用。

但是,我无法为 iOS 找到相同或类似的功能。我不确定 推送通知 是否可以这样做。请指教。

【问题讨论】:

【参考方案1】:

不,如果没有用户的自动更新设置,则无法更新或下载应用程序。

但是您可以尝试另一种方法。 就像当应用程序打开或进入前台时,调用 API/Web 服务来检查是否有基于应用程序当前版本发布的任何关键更新?根据“是/否”响应,向用户显示有新更新可用的提醒,然后单击“确定”,将他们带到 Apple 商店。

【讨论】:

【参考方案2】:

不,iOS 没有 Android 的自动更新功能。推送通知不适用于此,因为 1) 用户可能不允许推送通知,以及 2) 推送不会知道用户当前使用的版本。

如果您的应用程序调用后端 Web API 或 Web 服务,那么应用程序调用 Web 服务中的方法非常简单,例如 getVersion()。 Web 服务读取配置文件中设置的当前版本并将其返回给应用程序。它还可以返回一个标志,表明 Mandatory = Y 或 N。

在您的应用程序中,您每次启动时都会调用 getVersion() 方法。如果应用程序的版本号小于 getVersion() 中返回的版本,则检查强制标志是否设置为“Y”。如果是这样,您会显示一个对话框,提示您在使用该应用程序之前需要强制更新,您想现在安装它吗?如果是,则将它们导航到 iTunes 应用商店中的页面,然后退出该应用。如果否,则退出应用程序。他们每次尝试运行应用程序时都会收到相同的消息,直到更新为止。

如果强制标志设置为“N”,您会显示一个对话框,说明有可用的更新版本,您想现在安装吗?如果是,则将它们导航到 iTunes 应用商店中的页面,然后退出该应用。如果否,您允许应用程序打开并继续。但是,每次应用打开时都会再次提示用户,直到他们更新为止。

您可以让 getVersion() 方法同时适用于 iOS 和 Android,如果您将平台传递给方法 getVersion(String platform),然后读取 android_version 或 ios_version 的配置文件(因为版本号可能不同平台)取决于平台参数中传递的内容。

【讨论】:

感谢您的详细回答。我喜欢你的主意。关于它的更多信息,有 2 个名为 CodePush 和 Siren 的 API。它们有什么区别吗?是使用自定义编码还是使用这些 API 更好 嗯,第一个问题是您的应用程序是否需要调用任何外部 API 才能正常运行。如果没有,那么为了进行版本检查而不得不进行外部调用会有点痛苦。但是,如果一个应用程序不进行任何外部调用,那么它真的是独立的,所以如果一个人使用旧版本的应用程序应该不是问题。如果应用程序使用专用 API,那么这是添加 getVersion() 方法的地方,而不是第三方 API。

以上是关于iOS 是不是具有与 Android 一样的应用内更新功能?的主要内容,如果未能解决你的问题,请参考以下文章

需要在 Android 和 iOS 中集成应用内购买以与患者进行视频通话?

如何在iOS和Android上使用硬件和服务进行应用内购买

Google App Invites:具有不同包名称/捆绑 ID 的 iOS 应用和 Android 应用 - 它们如何与 goo.gl/App Invites 关联?

HERE maps iOS SDK 是不是像 Android SDK 一样提供默认图标?

iOS 应用内购买:Objective-C 与 Swift [重复]

iOS中是不是有任何相当于Android的服务?