3、Xcode项目配置:开启Capabilities中的In-App Purchase、配置Info.plist、导入StoreKit框架

好,咱们接着往下走。上一节我们把开发者账号和协议搞定了,现在轮到Xcode项目本身了。

说实话,我第一次做内购配置时,以为只要在代码里写几行调用就完事了。结果呢?跑起来直接崩溃,控制台报错说找不到商品。后来才发现——Xcode项目里好几个开关没打开。嗯,这里要注意,少一步都不行。

3.1 开启Capabilities中的In-App Purchase

这一步其实很简单,但很多人会漏掉。我见过不少新手,代码写得飞起,结果忘了开这个开关,折腾半天找不到原因。

操作路径是这样的:

  1. 在Xcode中选中你的项目文件(蓝色那个)
  2. 选择目标Target(你的App)
  3. 切换到 Signing & Capabilities 标签页
  4. 点击左上角的 + Capability 按钮
  5. 在弹出的搜索框中输入 "In-App Purchase"
  6. 双击添加,搞定

你会看到列表里多了一项 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都在里面。导入方式有两种:

方式一:手动添加(老派做法)

  1. 点击项目文件 → 选择Target → 切换到 General 标签
  2. 往下翻到 Frameworks, Libraries, and Embedded Content
  3. 点击 + 按钮
  4. 搜索 "StoreKit.framework"
  5. 选择 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拉取商品列表,展示给用户。准备好了吗?