StoreKit|通过 App Store Connect 设置商品

了解如何在 App Store Connect 网页端创建用于销售的商品,包含订阅、买断和消耗性商品。

StoreKit|通过 App Store Connect 设置商品

StoreKit 相关文章,推荐按次序阅读:

StoreKit|通过 App Store Connect 设置商品
了解如何在 App Store Connect 网页端创建用于销售的商品,包含订阅、买断和消耗性商品。
StoreKit|在 App Store Connect 中设置促销优惠
了解如何在 App Store Connect 中为 App 订阅设置不同的促销优惠方式。
StoreKit|使用 StoreKit 配置文件进行订阅测试
了解如何使用 StoreKit 配置文件,在 Xcode 中测试 App 购买功能。
StoreKit|使用 SwiftUI 构建订阅界面
处理退款场景 当用户退款之后,需要撤销用户的访问权限。 使用 SKPaymentTransactionObserver 的 didRevokeEntitlementsForProductldentifers API 进行:
StoreKit|在应用内显示优惠代码兑换界面
Implementing offer codes in your app | Apple Developer DocumentationProvide subscription service for customers who redeem offer codes through the App Store or within an app that uses receipts.Apple Developer Documentation 如果客户使用的设备运行 iOS 14、iPadOS 14、macOS 15 或更高版本,并且您的应用支持相应的 StoreKit 方法,则可在应用内兑换。 在您的应用中包含兑换页面是推荐的,但非强制要求。 在应用内实现代码兑换功能 为您的“兑换”按钮创建一个用户界面,用户可以在此界面上兑换他们的代码。

订阅 vs App 内购买项目

在 Xcode 中开始编写代码添加收费功能之前,需要先在 App Store Connect 中创建商品。

商品分为两个类型:

  • 第一种是“App 内购买项目”:用于消耗型和非消耗型商品(例如消耗性的游戏代币、永久可用的游戏皮肤等)
  • 第二种是“订阅”:用于自动续订或非续订的订阅服务。

一般来说,常见的付费场景:

  • 如果你想为 App 添加「订阅」功能(无论是月度订阅、还是年度订阅),请在订阅选项中创建对应的商品。
  • 如果你想为 App 添加「买断」功能,请在 App 内购买项目中,创建非消耗性商品。
  • 如果你想为 App 添加类似于 Moba 游戏中的皮肤功能,请在 App 内购买项目中,创建非消耗性商品。
  • 如果你想为 App 添加类似「积分」功能,并每次使用会消耗对应积分(例如起点阅读中的点券),请在 App 内购买项目中,创建消耗性商品。

订阅类商品

订阅群组

订阅群组是什么

对于自动续期订阅,订阅群组是必须创建的。

订阅群组是一种将相关自动续期订阅组织在一起的机制。同一群组内的所有订阅被视为互斥的,用户在任何时候只能激活该群组中的一个订阅。

  • 例如,提供"基础版"和"高级版"月度和年度订阅,这四个选项通常应该放在同一个群组中
  • 如果提供完全不同的服务(如"照片编辑"和"视频编辑"),它们应该放在不同的群组中

什么情况下需要创建多个订阅群组

大部分应用只需要一个订阅群组。

绝大多数应用的订阅模式相对简单:

  • 提供相同服务的不同等级(如基础版/高级版)
  • 提供相同服务的不同期限选项(月付/季付/年付)

这些都属于同一服务的变体,应放在同一个订阅群组中。

需要多个订阅群组的应用通常是:

  1. 提供明显不同且可独立使用的多种服务的大型平台
  2. 具有可以分别订阅的多个独立内容库或工具集的综合性应用
  3. 提供可以单独或组合选择的多种专业服务的企业级应用

例如,一个标准的生产力工具、健身应用、内容订阅服务或游戏,如果只是提供不同等级或不同期限的访问权限,通常只需要一个订阅群组即可满足需求。

除非你的应用明确设计为提供多种可以单独付费且可以同时激活的不同服务,否则单一订阅群组是最常见且最简单的方式。

创建订阅群组

创建一个订阅群组,选择一个参考名字(仅供开发团队内部使用):

设置自动续费订阅(auto-renewable subscriptions)

创建订阅

进入订阅群组,创建订阅:

  • 参考名称:这是订阅产品的内部名称,仅供开发团队使用
  • 产品 ID:
    • 这是在代码中引用订阅产品的唯一标识符
    • 一旦创建后不能更改,所以需要谨慎命名。
    • 在应用代码中,你将使用这个ID来请求产品信息和处理购买。

建议遵循反向域名格式,例如:

  • weisenjoytech.Filmo.subscription.premium.monthly (月度高级订阅)
  • weisenjoytech.Filmo.subscription.premium.yearly (年度高级订阅)
  • weisenjoytech.Filmo.subscription.pro.monthly (月度专业版订阅)

设置订阅信息

需要填写所有元数据(时长、价格、本地化、审核信息等),才能在后续编程中使用。按照实际情况填写即可。

需要特别主要的是:本地话语言、图片

设置本地化语言

订阅描述会在以下位置显示:

  1. App Store 购买界面 - 当用户点击应用内的购买按钮时,系统会显示一个确认弹窗,描述会显示在这个弹窗中
  2. 订阅管理页面 - 用户在iPhone/iPad的设置中查看自己的订阅时(设置 > Apple ID > 订阅)可以看到描述
  3. 收据邮件 - 用户完成购买后收到的Apple收据邮件中会包含此描述
  4. App内购买界面 - 如果你在应用内展示订阅选项,你可以选择使用这个官方描述
  5. App Store的应用页面 - 在"App内购买项目"部分可能会显示订阅信息

这个描述是用户了解他们即将购买什么的重要信息来源,应该简洁明了地说明订阅内容和主要价值。由于字符限制较短(45字符),需要高效传达最核心的价值主张。

在 StoreKit 配置文件中,可以看到 Localizations 选项:

设置图像(可选)

买断类商品(非消耗性商品)

提交审核

在 App Store Connect 中创建的商品(包括订阅和 App 内购买),都需要通过 Apple 审核之后,在生产环境中才能获取到商品信息。否则,在生产环境中,你的 App 订阅页面商品会为空。

App 内购买项目

可以随 App 一起提交正式版审核,

订阅商品

订阅商品需要单独提供审核: