如果您的应用程序使用的api在您的应用程序发布后被弃用,会发生什么?

时间:2013-11-30 14:33:42

标签: ios objective-c

如果您发布的应用程序使用后来弃用的API(在您的应用程序发布之后),那么会发生什么?

如果您的应用在商店发布后从未更新过该怎么办?它适用于所有未来版本的iOS吗?

当api在以后的操作系统版本中消失时,应用程序是否仍然有用?或者,App Store会阻止您的应用程序下载到未来的操作系统版本中吗?

4 个答案:

答案 0 :(得分:13)

你问:

  

如果您发布的应用程序使用后来弃用的API(在应用程序发布后),那么会发生什么?

根据Apple的说法,“被认定为已弃用的方法已被取代,未来可能无法支持。”

因此,毋庸置疑,如果您的应用使用的是将来某个时候弃用的API,它通常会继续有效,直到Apple选择不再支持该API为止。实际上,在API被弃用之后,您的应用程序将继续正常运行,因为Apple非常重视向后兼容性。

如果您在发布应用程序时使用已被标记为已弃用的方法(或者至少未对后续方法的可用性进行适当的运行时检查),则您将面临与即将发布的iOS版本不兼容的更大风险。但是,如果您坚持使用在发布应用程序时未弃用的API,则不太可能在任何合理的时间范围内遇到API更改问题。

  

如果您的应用在商店发布后从未更新过该怎么办?它适用于所有未来版本的iOS吗?

如果设计得很好(例如,您不依赖于在开发应用程序时弃用的方法),至少可能对几个iOS版本安全,但您无法保证这一点。开发人员需要承担的责任是确保应用程序在推出时与新版本的iOS兼容。

坦率地说,应用程序通常在API发展之前就已经过时了,因此在API破坏之前,用户兴趣水平会降低。

  

当api在以后的操作系统版本中消失时,应用程序是否仍然有用?或者,App Store会阻止您的应用程序下载到未来的操作系统版本中吗?

如果API最终退役,那么显然你的应用程序将不再起作用,除非你预料到这种情况并且优雅地处理这种情况。我不相信该应用程序会被自动删除,可能只是为了回应用户投诉。

我所知道的唯一自动删除是开发人员允许他们的付费开发者许可证失效。在这种情况下,应用程序会立即从商店中删除。


另外,您只关注API差异。另一个问题来源是那些依赖于一些未记录的iOS特性的应用程序,以便成功运行应用程序。如果您坚持使用标准的API文档调用,那么您应该没问题。但是,如果你有一些功能,你只需要通过实验发现一些kludgy work-around,但在官方文档中找不到,那么这是一个警告信号,表明你的应用可能不是非常“面向未来”并可能会破坏在未来的iOS版本中。

答案 1 :(得分:6)

什么都没有。弃用的api不会从操作系统中删除..几年后应用程序可能会崩溃然后现代操作系统如果你仍然使用该功能但是AFAIK在IOS的短暂生命中没有那种情况。

另一个故事是您更新应用的基本SDK 并重新编译它。可能是你被迫取代那个已弃用的电话。

答案 2 :(得分:3)

这很难说,因为一些被弃用的方法/属性仍然有用。例如,tableViewCell.textColor在iOS 3或4中折旧但它可以工作。 Apple试图保持与旧iOS的向后兼容性,并允许旧应用程序正常运行。

答案 3 :(得分:-1)

虽然我从未在自己的应用程序中遇到此问题,但我在商店中看到的应用程序尚未更新2年以上。许多这些应用程序在启动时崩溃,因为它们尝试访问不再有效的API并且内置了糟糕的错误处理。

我不确定Apple会不会主动删除这些应用程序,尽管他们拥有App Store后显然拥有这种能力。我还读过他们可以删除特定应用的每个installed copy on every iOS device

如果某个应用获得了足够的负面评论或评论报告为高度负面,则可能会被删除。