iOS上的StoreKit – 自动更新的订阅 – 如何知道它是否免费试用?

在iTunes Connect中,可以为自动更新订阅提供免费试用期。

App > Manage In App Purchases > Subscription Basic > 1 Month > Offer a free trial? 

我怎样才能得到这个信息在客户端? 我可以看到SKProduct没有关于这个的任何信息。 由于我们正在进行市场营销活动,所以最终用户很难理解有关产品的信息是否有试用期。

当然可以从我维护的服务器获取这种信息,但是随后我们将更新我们的服务器和iTunes Connect。 所以我不接受这样的答案,除非它从苹果的服务中获取试用期信息。

iTunes Connect的屏幕截图

TLDR; 这不可能。 您需要自己pipe理这些信息。


当您处理SKPayment时,您将收到回执。 您应该定期validation这些收据(例如在下载新内容之前),因为用户可能已经取消了订阅。 当用户取消订阅或订阅过期时,在validation购买收据时会返回一个描述性错误。

此外,收据为您提供了所有您需要的信息:对于给定的产品,您知道您授予哪个试用期。 因此,在进行购买时,您可以将购买收据中的购买date存储在您的模型对象中或NSUserDefaults中或钥匙链中与购买数据一起存储。 此时您知道试用期何时到期,并validation订阅是否仍然有效。 如果你不能,你可能想禁止访问的内容,直到你能这样做。

有关购物收据和订阅的更多信息,请查阅Apple 的“应用内购买指南” 。

在客户端,您通常通过产品标识符来识别不同的产品和特征,因为App Store不提供订阅期和免费试用期等特定信息。

因此,如果您的产品ID是例如: com.domain.app.product_paid1month_free7days ,则在客户端分割该ID,并知道付费订阅期限为1 month ,产品免费试用期为7 days

当然,其中一种方法是将产品ID传输到您自己的服务器,以获得其特征作为响应。 这样,您可以在不更新二进制文件和不同版本的情况下持续维护产品列表。