Xcode/Transporter 上傳 IPA 成功,構建版本在「活動」頁面顯示「處理中」,刷新後消失,郵箱無拒絕郵件,反复上傳 20+ 次均相同。
App Store Connect 後台自動掃描發現違規行為(最常見:調用私有 API),直接標記為「無效二進制文件」,不進入人工審核流程,因此不發送郵件通知,構建版本自動從列表隱藏。
ITMS-90338: Non-public API usage 等錯誤代碼。appstoreconnect CLI 工具預檢。| 代碼特徵 | 風險等級 | 合規替代方案 |
|---|---|---|
performSelector: 動態調用未導出方法 | 高 | 改用 Protocol/Delegate/Block 靜態分發 |
KVC 訪問私有屬性 setValue:forKey: | 高 | 僅使用公開 API,或向 Apple 申請 Entitlement |
| Method Swizzling 交換系統類方法 | 極高 | 避免 Swizzling 系統框架類,僅限自有類 |
鏈接私有框架(如 GraphicsServices、SpringBoardServices) | 極高 | 移除鏈接,尋找公開框架替代方案 |
| 第三方 SDK 內部調用私有 API | 中 | 更新 SDK 至最新版,或聯繫服務商確認合規性 |
# 1. 解壓 IPA
unzip YourApp.ipa -d Payload
# 2. 使用 nm / otool 檢查未導出符號
nm -u Payload/YourApp.app/YourApp | grep -E '^_'
# 3. 對照 Apple 公開 API 列表(Apple Developer 文檔)確認是否為私有符號
提問者提到「上架那幾天發布 iPhone 7,壓力大產生疏忽」。高峰期審核系統可能誤判、延遲通知。建議:
構建版本「處理中→消失無通知」= 自動掃描拒絕(多為私有 API)。本地靜態分析 + 符號表檢查 + 更新第三方 SDK 是標準自檢流程。遇到誤判可通過工單/TSI 申訴,但預防永遠優於補救。