使用调用已弃用 API 的 SDK

Using SDK that calls deprecated APIs

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

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

如能提供任何相关信息,我们将不胜感激。

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

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

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

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

在生产环境中,对您的问题的简短回答是,如果在 Apple 的下一次 OS 升级中移除 API(如果应用开发者不采取发布前的任何操作)。但是,长答案比这复杂一点。

最好的情况是 Apple 不会在很长一段时间内删除 API,例如 UIWebView。我认为自从 Apple 弃用该框架以来至少已经过去了 5 年,从技术上讲,您仍然可以使用 UIWebView 构建应用程序。这意味着您无需执行任何操作(理论上)。

但是,如果 API 被新的 OS 更新删除,则有几种情况:

  1. 设备有资格进行 OS 升级,然后当 app/sdk 调用 API 时,应用很可能会继续崩溃。

  2. 如果设备不符合 OS 升级条件(例如停留在 iOS 10),应用程序仍会在这些设备上运行一段时间,直到所有者购买新设备(无论应用开发者是否采取行动)。该特定应用程序版本也应该可以通过 iCloud purchases/downloads 获得。所以客户可以re-download那个版本,即使他们删除了它等等

对于活跃的应用程序开发者来说,第一种情况不应该发生。我希望他们在 OS 版本的下一个测试版上测试该应用程序,并在出现问题时采取措施,例如要求您提供更新,或将您的 SDK 替换为另一个。

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

另一方面,要点 2 中的情况一开始可能并不明显,Apple 在说服客户购买最新设备方面做得非常好。有一个相对的 2 年周期,因此您可能找不到很多使用旧手机的客户,这些手机卡在旧 OS 上。根据您的重要性级别,这可能会被忽略。

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

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