首页 > 解决方案 > 使用调用已弃用 API 的 SDK

问题描述

我正在开发一个 SDK,其部署目标设置为 9.0。我使用了一些在 iOS 10 及更高版本中已弃用的 API,以及在 iOS 13 及更高版本中弃用的其他 API。

我的问题是使用我的 SDK 并且其部署目标设置为 iOS 14 的应用程序会发生什么?我的 SDK 会受到影响吗?我的方法会被正确调用吗?它会使托管应用程序崩溃吗?这些情况下的行为是否不清楚?或者也许一切都会完美运行?

对此的任何说明将不胜感激,谢谢。

标签: iossdkcompatibilityios14deployment-target

解决方案


首先,弃用是结束 API 生命周期的第一步,Apple 警告开发人员这些 API 将在未来的 iOS 版本中删除。除了苹果,没人知道什么时候。这当然是一种智慧(例如安全问题、更好的 API 设计等)。

开发使用已弃用 API 的 SDK 通常被认为是死路一条。我相信您有自己的理由,但是,任何使用您的 SDK 的人都会问自己是否会有任何价值或是否会有维护开销。

在开发阶段,您应该注意某些问题。如果使用您的 SDK 的应用程序开发人员将部署目标设置为 iOS14,Xcode 很可能会将其标记为警告。这取决于其他因素,例如您正在使用的开发语言,是否已经编译等。

假设您有充分的理由继续前进,那么可能会发生多种情况。

在生产中,对您的问题的简短回答是,如果在 Apple 的下一次操作系统升级中删除 API(如果应用程序开发人员在发布之前未采取任何操作),则应用程序将崩溃。但是,长答案比这要复杂一些。

最好的情况是Apple 很长一段时间都不会删除API,例如UIWebView。我认为距 Apple 弃用该框架已经至少 5 年了,从技术上讲,您仍然可以使用 UIWebView 构建应用程序。这意味着您不必做任何事情(理论上)。

但是,如果 API 被新的操作系统更新删除,则有几种情况:

  1. 该设备有资格进行操作系统升级,那么当应用程序/sdk 调用 API 时,该应用程序很可能会继续崩溃。

  2. 如果设备不符合操作系统升级条件(例如卡在 iOS 10 上),应用程序仍将在这些设备上运行一段时间,直到所有者购买新设备(无论应用程序开发人员是否采取行动)。该特定应用程序版本也应该可以通过 iCloud 购买/下载获得。因此,即使客户将其删除等,客户也可以重新下载该版本。

对于活跃的应用程序开发人员,第一种情况不应该发生。我希望他们在操作系统版本的下一个测试版上测试该应用程序,并在出现问题时采取行动,例如要求您提供更新,或用另一个 SDK 替换您的 SDK。

API 删除过程可能会更明智一些,Apple 可能会强迫你,但仍然要温和。Apple 可能会明确表示并警告开发人员,任何包含 API 的新应用程序或应用程序更新都不会被 App Store 接受。这将应用程序开发人员的双手联系在一起。他们需要做出选择。这个警告会提前几个月,你可以把这项工作放到你的待办事项中并为此做好计划。

另一方面,第 2 点中的场景一开始可能并不明显,Apple 在说服客户购买最新设备方面做得很好。有一个相对的 2 年周期,因此您可能找不到很多使用旧手机的客户,这些手机卡在旧操作系统上。根据您的显着性水平,这可能会被忽略。

应用程序开发人员可能会也可能不会保留应用程序的最小目标。如果他们如此坚决,那么他们的应用程序很可能与最新的设备不兼容,或者 Apple 可能会拒绝他们的更新(如上所述)。那么这意味着它几乎是应用程序生命的终结,只有少数客户使用。

在某些情况下,Apple 也可能会从 App Store 和 iCloud 下载中删除一段时间未维护的应用程序(这种情况已经发生)。


推荐阅读