文章摘要
这篇文章用超市比喻详细介绍了iOS应用内购买(IAP)的配置流程和注意事项。主要内容包括:1) IAP商品类型(消耗型、非消耗型等4类)及上架配置;2) Xcode中开通IAP等能力的步骤;3)证书管理和StoreKit框架的使用要点。文章强调商品ID的唯一性、测试注意事项和促销活动配置,并形象地将整个流程比喻为开超市:App Store Connect是商品管理系统,Xcode能力是营业执照,StoreKit则是收银台。最后提醒开发者注意证书更新和审核要求,确保交易合规顺畅。
一、应用内购买(IAP)配置——像开超市卖商品
想象你在App里开了一家“虚拟超市”,你要卖各种商品,比如点券、皮肤、会员卡。要让顾客(用户)顺利买到东西,你得在苹果的“后台超市管理系统”(App Store Connect)里把商品都登记好。
1. 商品类型——商品有四种“性格”
- 消耗型:像矿泉水,喝完了还能再买,比如游戏点券、体力。
- 非消耗型:像买断的电影票,买一次就永久拥有,比如解锁关卡、去广告。
- 自动续期订阅:像健身房月卡,到期自动续费,用户不手动取消就一直扣钱,比如视频会员。
- 非续期订阅:像一次性的季卡,用完就没了,不会自动续费,比如赛季卡。
2. 商品上架流程——在后台“登记商品”
- 你要给每个商品起个身份证号(产品ID),格式像“com.你的公司名.商品名”,全世界唯一,不能重复。
- 还要给商品定价,不能随便写,只能选苹果给的价目表(比如6元、30元、648元)。
- 注意:商品ID一旦用过就不能再用,哪怕你下架了也不能复用。
3. 促销活动——超市搞活动
- 推介促销:新用户首购优惠,比如“新会员首月1元”。
- 续订促销:老用户续费优惠,比如“老会员续费打8折”。
- 优惠码:像发优惠券,给特定用户定向发放。
二、Xcode能力管理——给App“开通权限”
就像你开超市要办各种证件,App也要在Xcode里“开通能力”,让它能合法卖东西、发通知、用Apple登录。
1. Capabilities(能力)配置——“打勾开通功能”
- 在Xcode里,给App打勾开通“In-App Purchase”能力,这样App才有“卖东西”的资格。
- 如果用到Apple Pay、Apple登录、推送通知,也要分别打勾开通。
- 这些“打勾”会自动生成一个“entitlements文件”,就像App的“功能证书”。
2. StoreKit框架——“收银台工具箱”
- 要在Xcode里把StoreKit框架加进来,这样App才能调用苹果的“收银台”API,处理购买流程。
3. 签名证书和描述文件——“营业执照”
- App上线前要用苹果官方的“营业执照”(签名证书和描述文件)打包,证书里要包含你开通的所有能力。
- 每次你加新功能(比如新开通推送),都要重新生成“营业执照”。
三、常见小贴士
- 商品ID别乱起,别删,删了就永远不能再用。
- 测试时用沙盒账号,别用真卡真钱。
- 促销活动要提前规划,部分活动要苹果审核。
- 每次加新能力,记得更新证书和描述文件。
四、形象比喻总结
- App Store Connect:你的商品管理后台,像超市的商品登记系统。
- Xcode Capabilities:App的功能开关,像超市的各种营业执照。
- StoreKit:App里的收银台,帮你收钱、发票。
- 签名证书/描述文件:App的官方营业执照,没它不能开门营业。
这样一来,你的App就能合法、顺利地在苹果生态里“开超市、卖商品、搞活动”,还能保证每一笔交易都合规、顺畅!
下面给出具体操作步骤
一、应用内购买(IAP)核心配置
1. 商品类型选择
类型 | 说明 | 典型场景 | 二次购买行为 |
---|---|---|---|
消耗型 | 可重复购买,消耗后可再次购买 | 游戏点券、体力、道具 | 直接购买 |
非消耗型 | 终身购买一次,永久解锁 | 关卡、去广告、皮肤 | 已购弹窗提示 |
自动续期订阅 | 持续扣费,订阅期内自动续费 | 视频会员、云存储 | 已订阅提示 |
非续期订阅 | 有效期后不自动续费 | 赛季卡、月卡 | 已订阅过提示 |
2. App Store Connect配置流程
- 路径:App Store Connect > 我的App > 目标App > App内购项目 > 管理
- 必填字段:
- 产品ID:逆域名格式(如
com.proximabeta.inbox001
),全局唯一且不可复用 - 定价:选择苹果官方价目表档位(如6元、648元)
- 产品ID:逆域名格式(如
- 关键限制:
- 单账号最多10,000个商品
- 商品ID删除后永久占用,无法复用
3. 促销活动配置
活动类型 | 适用场景 | 支持形式 | 时限范围 |
---|---|---|---|
推介促销优惠 | 新用户首购订阅组服务 | 随用随付/提前支付/免费 | 1-12个月 |
促销优惠 | 现有订阅用户续订 | 随用随付/提前支付/免费 | 无固定时限 |
优惠代码 | 定向发放特定用户 | 随用随付/提前支付/免费 | 需自定义 |
- 注意:促销活动需在App Store Connect后台配置,部分活动需苹果审核。
二、Xcode能力管理
1. 必要Capabilities配置
-
entitlements文件示例(
*.entitlements
):<dict> <key>com.apple.developer.in-app-payments</key> <array> <string>merchant.com.your.bundleid</string> </array> <key>com.apple.developer.applesignin</key> <array> <string>Default</string> </array> </dict>
-
StoreKit框架:
必须添加到Build Phases > Link Binary With Libraries
,用于IAP相关API调用。 -
推送通知:
若涉及推送,需在Capabilities中开启Push Notifications,并在entitlements文件中配置APS Environment
字段(development/production)。
2. 签名证书与描述文件
- 企业证书:需配置正确的TeamID(如
Proximabeta: WPPQGKQGU6
)。 - 描述文件:必须包含最新的权限(如IAP、推送、Sign In with Apple等),每次能力变更后需重新生成并下载描述文件。
三、实操注意事项
- 商品ID一旦创建不可复用,请规范命名,避免误删。
- 开发测试时,可用沙盒账号进行IAP测试,避免真实扣费。
- StoreKit测试:Xcode 12+支持StoreKit本地测试,无需真机和App Store Connect。
- 订阅商品,务必配置好“订阅组”,避免订阅冲突。
- 促销活动,需提前规划好活动类型和时限,部分活动需苹果审核。
- 描述文件和证书,每次能力变更后都要重新生成并在Xcode中更新。
四、常见问题与排查
- 商品无法购买/找不到:检查产品ID、定价、状态(是否“可用”)、描述文件是否包含IAP权限。
- 订阅无法续期:检查订阅组配置、促销活动设置、沙盒测试账号状态。
- 推送/Apple登录失败:检查entitlements文件、Capabilities、证书和描述文件是否齐全。