App因Guideline 2.1被拒:未提交内购产品,需移除StoreKit遗留代码?
解决App因遗留StoreKit代码被App Store审核拒绝的问题
我之前也碰到过类似的审核拒登情况,给你梳理下核心问题和对应的解决步骤:
核心结论
你需要同时处理遗留StoreKit代码和App Store Connect内购配置,两者都可能导致这次的2.1审核拒绝。
一、必须移除所有StoreKit相关遗留代码
Apple的审核系统会深度扫描App的二进制文件,哪怕你没在Capabilities里启用In-app purchases,只要代码中存在StoreKit相关的API调用、框架导入,审核团队就会默认你的App包含内购功能,进而检查对应的内购产品是否已提交。哪怕这些代码是遗留的、实际不会被触发,只要存在就会触发审核逻辑:
- 彻底删除所有
import StoreKit(Swift)或#import <StoreKit/StoreKit.h>(OC)的导入语句; - 移除所有StoreKit相关的代码逻辑,比如
SKPaymentQueue的监听、SKProductRequest的请求、内购相关的弹窗/按钮等; - 顺便清理掉App中没用的内购相关文案,比如"订阅会员"、"解锁完整版"这类和内购绑定的字符串。
你可以用命令行验证是否清理干净:打包后找到App的二进制文件,运行
otool -V 你的App二进制文件路径 | grep StoreKit
如果没有任何输出,说明StoreKit相关符号已经清理完毕。
二、检查并清理App Store Connect中的内购配置
如果你的App Store Connect后台曾经创建过订阅组或内购产品,但没有提交审核,或者没有删除,也会触发2.1的拒绝:
- 登录App Store Connect,进入你的App页面,找到「功能」-「内购项目」;
- 如果存在未提交审核的订阅组、内购产品,或者已经创建但不再需要的项目,直接删除;
- 确认所有内购相关的配置都已清理完毕,没有残留的待审核项目。
三、提交前的最后验证
- 再次检查Xcode中App的Capabilities页面,确保「In-app purchases」处于关闭状态;
- 重新打包,确认二进制文件中无StoreKit相关符号;
- 确认App Store Connect中无任何内购相关的未完成配置。
按照上面的步骤处理后,重新提交审核应该就能通过了。
内容的提问来源于stack exchange,提问作者Ellen
相关产品推荐
相关产品推荐

