由于使用了非 public api UIRotatingAlertController、WKActionSheet,Apple 拒绝了我的应用

Apple rejected my app due to use of non public api UIRotatingAlertController, WKActionSheet

Guideline 2.5.1 - Performance - Software Requirements

您的应用使用 "prefs:root=" 非 public URL 方案,这是一个私有实体。 App Store 不允许使用非 public API,因为如果这些 API 发生变化,可能会导致糟糕的用户体验。具体来说:

OS_dispatch_group、_UIRotatingAlertController、WKActionSheet

后续步骤

要解决此问题,请修改您的应用以使用 public API 提供相关功能,或使用 "prefs:root" 或 "App-Prefs:root" URL 方案移除相关功能。

Blockquote

我已经解决了其中两个,我可以在我的代码中找到它们,它们是 "prefs:root" 和 "OS_dispatch_group",但其他两个在代码中未检测到。这里我使用命令grep -R '_UIRotatingAlertController' *。如果需要 运行 nm 工具或 otool 的任何其他命令,请提出建议。

Blockquote These two selectors are both present in the [JSQMessagesViewController initialize]-> JSQInstallWorkaroundForSheetPresentationIssue26295020() method and are directly obfuscating their use to avoid static detection (https://github.com/jessesquires/JSQMessagesViewController/blob/f52e83bdb4d5c19ecfd5b6e54cdb9f2efa66cfcf/JSQMessagesViewController/Controllers/JSQMessagesViewController.m). It would be appropriate to remove the library entirely before resubmitting for review.

这是 apple 的回复,因为这个 API 使用了一些技巧,所以我无法观察到问题,但 apple 很容易用他们的工具观察到。