3、Xcode项目配置:开启Capabilities中的In-App Purchase、配置Info.plist、导入StoreKit框架
好,咱们接着往下走。上一节我们把开发者账号和协议搞定了,现在轮到Xcode项目本身了。
说实话,我第一次做内购配置时,以为只要在代码里写几行调用就完事了。结果呢?跑起来直接崩溃,控制台报错说找不到商品。后来才发现——Xcode项目里好几个开关没打开。嗯,这里要注意,少一步都不行。
3.1 开启Capabilities中的In-App Purchase
这一步其实很简单,但很多人会漏掉。我见过不少新手,代码写得飞起,结果忘了开这个开关,折腾半天找不到原因。
操作路径是这样的:
- 在Xcode中选中你的项目文件(蓝色那个)
- 选择目标Target(你的App)
- 切换到 Signing & Capabilities 标签页
- 点击左上角的 + Capability 按钮
- 在弹出的搜索框中输入 "In-App Purchase"
- 双击添加,搞定
你会看到列表里多了一项 In-App Purchase,旁边有个绿色的对勾。这就表示开启了。
重要提醒:如果你用的是多个Target(比如免费版和付费版),每个Target都要单独开启。别问我怎么知道的——我曾经只给主Target开了,测试Target没开,结果测试时死活调不通。
3.2 配置Info.plist文件
接下来是Info.plist。这一步很多人会忽略,但苹果其实有明确要求。
你需要添加一个键值对:
- Key:
SKStoreProductParameterITunesItemIdentifier(或者直接搜 "Store Kit") - Type:
Array - Value: 添加你App的Apple ID(就是你在App Store Connect里看到的那个数字ID)
等等,我是不是说太快了?你可能会问:这个Apple ID从哪找?
在App Store Connect里,进入你的App页面,在 App Information 选项卡下,有个 Apple ID 字段。那是一串纯数字,复制过来就行。
我的小技巧:如果你只是本地测试,这个值可以暂时不填。但提交审核前一定要补上,否则审核会被拒。我有个朋友就因为这个被拒了一次,来回折腾了一周。
另外,如果你的App支持 免费订阅(比如提供免费试用期),还需要在Info.plist里添加:
- Key:
SKAdNetworkItems - Type:
Array - 里面添加一个字典,key为
SKAdNetworkIdentifier,value为对应的广告网络ID
不过这个一般用不到,除非你集成了广告。咱们先放一放。
3.3 导入StoreKit框架
好,现在项目配置好了,该引入框架了。
StoreKit是苹果提供的内购框架,所有支付相关的API都在里面。导入方式有两种:
方式一:手动添加(老派做法)
- 点击项目文件 → 选择Target → 切换到 General 标签
- 往下翻到 Frameworks, Libraries, and Embedded Content
- 点击 + 按钮
- 搜索 "StoreKit.framework"
- 选择 StoreKit.framework,点击 Add
方式二:代码导入(我推荐的做法)
直接在需要使用内购的文件里写:
import StoreKit
Xcode会自动帮你链接框架。我个人习惯用这种方式,省事,而且项目结构更干净。
注意:如果你用的是SwiftUI,记得在需要使用内购的View里也加上 import StoreKit。我见过有人只在Model文件里导入,结果View里调用时直接报错——编译器可不会帮你自动传递依赖。
3.4 验证配置是否成功
配置完了,怎么知道有没有问题?我一般会写一小段测试代码:
import StoreKit
func checkStoreKitAvailability() {
if SKPaymentQueue.canMakePayments() {
print("✅ 内购可用,设备支持支付")
} else {
print("❌ 内购不可用,可能是家长控制限制了")
}
}
把这个方法放在 viewDidLoad 或者 onAppear 里调用。如果控制台打印出 "✅ 内购可用",说明你的项目配置基本没问题。
如果打印出 "❌",别慌。先检查一下:
- 是不是在模拟器上跑的?模拟器不支持内购,必须用真机
- 是不是沙盒账号没登出?去设置里退出Apple ID,重新登录沙盒账号
- 是不是Capabilities没开?回去看一眼,绿色对勾在不在
嗯,基本上就这些坑。我当年在模拟器上折腾了半小时,后来才发现——模拟器压根不支持StoreKit。你说气不气人?
3.5 小结
这一节的内容其实不多,但每一步都很关键。总结一下:
| 步骤 | 操作 | 常见问题 |
|---|---|---|
| 开启Capabilities | 添加In-App Purchase能力 | 多Target时容易漏掉 |
| 配置Info.plist | 添加Apple ID | 提交审核前必须补上 |
| 导入StoreKit | 代码导入或手动添加 | SwiftUI中别忘了在每个文件里import |
| 验证配置 | 调用canMakePayments() | 必须用真机测试 |
配置搞定后,下一节我们就可以真正开始写代码了——从App Store拉取商品列表,展示给用户。准备好了吗?