如何支持/提供具有免费试用期的 iOS 订阅?

How to support / offer iOS subscriptions with a free trial period?

我正在努力改变我现有的 iOS 10+ 应用程序以提供自动续订订阅。

虽然“正常”订阅(无介绍性优惠)在我的应用程序和服务器(收据验证和用户帐户处理)上都运行良好,但我很难理解如何提供免费试用期。

在 App Store Connect 中设置免费试用期没有问题,但我不明白如何在我的应用程序和服务器上实现它。


问题 1:了解资格

来自 Apple 文档:

You can make introductory offers to customers who haven’t previously received an introductory offer for the given product, or for any products in the same subscription group (...)

Before offering introductory price, you must first determine if the user is eligible to receive it (...)

To determine if a user is eligible for an introductory offer, check their receipt...

假设我设置了 7 天免费试用 的订阅。用户购买此订阅,使用免费试用版并在取消订阅之前继续付费订阅一段时间。一段时间后想继续订阅

如果用户再次购买相同的订阅产品会怎样?

换句话说:

是否只需要检查资格以显示权利 UI(= grant offer yes/no 由商店检查)或确保 用户没有从相同的报价中受益(=授予报价yes/no由应用程序检查)?


问题2:如何查询资格?

如苹果文档中所述,检查资格的最佳方法是验证应用程序收据并检查是否已收到介绍性优惠。这应该尽早完成,最好在应用启动时完成。

很好,但据我所知,不能保证收据可用。如果找不到收据,用户必须先提供他的应用商店凭据才能下载收据...

如果应用程序在第一次启动时做的第一件事是要求用户登录商店,那将是非常烦人的。

这真的是预期的实现吗?


问题三:如何处理资格?

假设我已成功检查用户是否有资格获得优惠:如何提供优惠?

我是否必须在 App Store Connect 中设置两种不同的订阅产品(一种有免费试用,一种没有)让用户购买其中一种?

或者资格检查只需要显示正确的 UI“立即购买免费试用” vs “立即购买”) 而我可以在两种情况下使用相同的产品吗?

Problem 1 : Understanding eligibility

他将立即支付订阅费用。免费试用仅限一次

Problem 3 : How to handle eligibility?

  1. Do I have to setup two different subscription products in App Store Connect (one with free trial and one without) to let the user purchase the one or the other?

    没有。您只需设置一种产品并添加介绍性优惠(免费试用或介绍性优惠)

  2. Or the eligibility check only necessary to display the correct UI ("Purchase now with free trial" vs "Purchase now") while I can use the same product in both cases?

    仅用于显示正确的 CTA 和消息。归根结底,Store(Apple) 是决定用户是否获得免费试用的人

要检查用户的资格,您需要将收据传递到您的服务器。然后,您的服务器可以向 Apple 查询解码后的收据(/verifyReceipt 端点)。在解码收据中,检查 latest_renewal_info 列表中的所有 txn。如果您发现 is_in_free_trial 字段对于同一订阅组中的任何产品都是正确的,那么您可以放心地假设用户之前使用过免费试用并向用户显示正确的消息。

此外,即使该订阅组下的所有产品都启用了免费试用,用户也只能在每个订阅组中获得一次免费试用。

我同意 Apple 在查询产品时会在应用程序本身中提供资格。但是相信我 none 的应用商店提供了这些信息,包括 Google.

就登录而言,收据始终存在于沙盒位置,并且可以从那里检索。 (另外,请考虑到如果用户未登录则无论如何都无法购买订阅)