https://www-origin.revenuecat.com/blog/engineering/ios-subscription-groups-explained/

在计划您的应用程序内购买之前,了解订阅组非常重要。

iOS 订阅组说明

2016 年,Apple宣布了新的激励措施,鼓励开发者维持其客户连续订阅一年以上。Apple 同时引入了订阅组:一种对订阅产品进行分组的方式,可以更轻松地管理活动订阅。

在计划您的应用程序内购买之前,了解订阅组非常重要。

订阅组

订阅组是具有某些特定属性的订阅产品的集合。

  • 订阅组中的两个产品不能同时处于活动状态。
  • 免费试用或促销价每组只能使用一次。
  • 订阅组还确定每个产品的服务级别,确定升级/降级/交叉升级行为。
  • 订阅组具有本地化的描述数据,这些数据决定了您的应用在App Store 设置的管理菜单中的显示方式。

iOS 订阅组说明订阅组如何影响您的客户在管理订阅时看到的内容。

订阅组解决了两个主要的用户体验问题:

  • 用户现在可以升级或降级他们的订阅,而无需先取消、等待到期再重新购买。
  • 用户不会再意外地同时订阅。

在订阅组内移动

用户可以通过两种方式更改活动订阅:

  • 设置应用中的订阅管理页面。
  • 在您的应用程序中,通过启动对与另一个有效订阅产品属于同一组的产品的应用程序内购买。

这些选项为用户提供了极大简化的体验;但是,对于开发人员来说,有一些注意事项。

通过“设置”应用

当用户通过设置应用程序更改订阅时,您的应用程序将不会运行,并且您无法在 StoreKit 支付队列中观察到新 SKPaymentTransaction 的出现。您可以通过三个选项来正确处理此问题:

  1. 以足够高的频率轮询 lastest_receipt_info 以获取用户过去的收据
  2. 连接Apple 的状态更新通知
  3. 使用RevenueCat(我个人最喜欢的)

如果您的应用程序没有任何跨平台功能,您可能希望在下次应用程序启动时收到 SKPaymentTransaction,然后刷新您的收据数据。如果您的订阅提供应用以外的任何内容,则此选项不起作用。

作为应用内购买

或者,您可以在您的应用程序内更改订阅,就像您启动标准的应用程序内购买一样。启动升级或降级购买时,StoreKit 会呈现购买流程的修改版本:

img如果一个组已经有订阅,则对该组中的产品的购买将启动更改。

从应用程序内提供升级订阅是一种您不常看到的技术。每个提供短期和长期订阅的应用程序都可以为用户提供 UI 来升级和降级他们的订阅。旁注:我希望 Apple 扩展它以允许在 iOS 12 中取消

用户发起升级、降级或交叉升级后,执行方式有点复杂

升级、降级和交叉升级!天啊!

为了更好地说明这些有些复杂的行为,让我们考虑一个场景。以下是基于包含两个服务级别的****订阅组的几个示例,每个服务级别包含两个不同持续时间的产品。

img

提升服务水平

从较低服务级别升级到较高服务级别会立即停止当前订阅并退还剩余期限,同时启动对新产品的订阅。

img升级服务级别会立即发生。

降低服务水平

降级的行为不同。当用户降级服务级别时,他们当前拥有的订阅始终会持续到原始到期日期。之后,新产品开始其周期。

img直到当前订阅期结束才会降级。

在服务级别内跨级

当用户在同一服务级别内移动时,事情开始变得更加复杂,也就是crossgrade。跨级执行的方式取决于所涉及产品的持续时间。

如果两个产品的持续时间相同,则其行为类似于服务升级,立即结束并退还当前订阅的剩余部分并启动新产品的订阅。

img交叉升级到具有相同持续时间的产品就像升级服务级别一样。

在具有不同持续时间的相同服务级别的两个产品之间交叉升级时,其行为类似于服务级别降级。

img不同期限产品之间的交叉分级类似于降级。

对于所有的复杂性,正确的订阅组和服务级别配置如果执行得当,可以为用户创造非常流畅的体验。

如何使用服务级别

对于大多数订阅应用程序,您可以在同一组和一个服务级别中使用所有产品。此设置类似于*“专业”计划,在该计划中,您有“专业(1 个月)”“专业(6 个月)”“专业(1 年)”*。在这种情况下,订阅更改行为将表现为“交叉分级,不同持续时间”图中的行为。

img用户在一个服务级别内升级和降级。

使用多个服务级别的正确实例是当您提供差异化产品时。例如,您可以提供Pro计划和Pro+计划,其中Pro+提供对附加功能或内容的访问。每个计划将包含三个产品,每个持续时间一个。通过将Pro+产品置于更高的服务级别,用户可以立即从Pro升级到Pro+,而无需等到当前订阅期结束。

img宽限期内取消订阅的天数不计算在内,但是,如果用户在宽限期结束前重新订阅,取消前累计的天数将被保留。

苹果的份额

很容易忽视为什么这很重要:让用户连续订阅一年。在此之后,Apple 将收入分成从 30% 减少到 15%。为了解决这个问题,Apple 还在用户取消订阅后引入了 60 天的“宽限期”,如果他们重新订阅,他们将保留累积的天数。

限制

订阅组使测试价格更加困难。因为订阅组中的所有产品都可以通过订阅设置对用户可见,所以您无法以不同的价格将一次性产品添加到订阅组并控制谁可以看到它。如果您想对产品的两个价格进行 A/B 测试,您需要创建两个完全平行的订阅组。部署和维护整个并行订阅组可能难以管理,特别是如果您正在进行多个价格测试(您应该这样做)。

由于免费试用和介绍性价格仅限于每组一次使用,因此需要产品所属的组来计算产品资格。Apple 不在 SKProduct 中提供此信息,因此如果开发人员希望能够正确计算促销价资格,他们需要携带产品标识符和订阅组。( RevenueCat 现在提供介绍性价格资格)

使用订阅组并用好它们

总的来说,订阅组是对 iOS 订阅生态系统的重要补充。它们保护用户、合理的默认设置,甚至为开发人员提供一些机会。在您启动订阅应用内购买产品之前,请确保您考虑了群体的具体行为和服务水平,以便了解您将提供的体验。