iOS:在应用程序购买pipe理多个自动更新订阅与升级和降级选项

我们正在开发一个iOS应用程序的iPhone将免费function以及应用程序将具有高级function与4应用程序购买自动更新订阅选项如下:

  • 单月订阅
  • 单年订阅
  • 家庭每月订阅
  • 家庭每年订阅

我们将在应用程序内有一个商店屏幕,这些屏幕可以select订阅我们应用程序提供的各种订阅。

我们发现用户可以转到设备设置并pipe理他们的应用内购买订阅。

我们还计划提供诸如用户可以从一个订阅升级到另一个的选项,并且用户也应该能够降级他们的订阅,这将是所有相同的选项反向并返回到免费版本可能的升级选项:

  • 免费的任何4订阅选项
  • 单月一次到单身一年
  • 每月一次到家庭每月
  • 每年每个家庭一次
  • 家庭每年每月家庭

可能的降级选项:

  • 家庭每年每月到家庭
  • 家庭每年到单月
  • 家庭每月到单月
  • 每年一次,每月一次
  • 从任何4个订阅选项到免费版本

注意:

  • 根据苹果公司,我们不能使用苹果家庭共享选项来分享In App购买,所以我们正在开发我们自己的家庭共享选项。 (参考: https : //support.apple.com/en-in/HT203046 )

查询:

  1. 我们对如何在iOS应用程序中pipe理订阅有疑问。
  2. 如何设置设置选项将显示我们的4应用程序购买选项升级和降级从一个选项到其他?
  3. 作为iOS开发者,我们需要考虑如何恢复自动可更新订阅? 我们不清楚如果用户尝试使用我们的应用程序中的多个用户帐户使用iTunes帐户来恢复可能的情况,有什么防范,我们可以关注哪些苹果允许用户一次性购买订阅,并尝试恢复多个用户帐户?
  4. 苹果将​​拒绝定制的家庭共享选项使用汽车可再生订阅选项?
  5. 我们需要注意哪些问题,如果我们能够使用上述function,哪个苹果将无法处理?
  6. 如果我们正在使用iOS应用程序的上述function,有什么可能违反苹果指南和应用程序拒绝?

如果任何人能够分享他们的意见,或者提供一些指导我们应该去哪里,或者如果我们要从苹果政策中走出来,这对我们将是非常有帮助的….所有这些反馈将帮助我们获得在这里移动的东西。

谢谢

  1. 我们对如何在iOS应用程序中pipe理订阅有疑问。

由于您正在使用自己的用户pipe理系统,因此应该在数据库中保留与用户关联的订阅状态。 当用户在应用程序中创build购物时,应用程序应将此收据发送到您的API,然后进行validation 。

一旦持续,排队在订购到期date运行的预定进程更新logging和无限期,直到到期date不再在将来。

当用户打开应用程序以确定其订阅状态时,您的应用程序应该查询您的API。 不要依靠应用程序中的本地收据,因为您的用户的家庭成员设备不会有此购买关联。

  1. 如何设置设置选项将显示我们的4应用程序购买选项升级和降级从一个选项到其他?

如果iTunes Connect中列出的所有产品都具有相同的“订阅系列”,则它们将显示在用户iTunes帐户的“订阅pipe理”页面中。

当用户在产品之间切换时,交易将被创build并且SKPaymentTransactionStatePurchased事件将被添加到SKPaymentQueue 。 这将是一个新的交易,其原始交易标识符与第一次购买相同认购系列产品时产生的产品标识符反映了新产品。

出于这个原因,您希望您的应用程序中的事务观察者在后台运行,以接收任何新的事务。 当收到新的交易时,您可以a)将整个收据发送到您的API或b)通知您的API已经收到新的交易,并重新validation持续的收据。

与(a)一起可能会成为问题,因为随着时间的推移收据将变得更大,每次需要来自用户的更多带宽。

与(b)一起使用也有缺点,因为您可能会遇到用户切换iTunes帐户等边缘情况的麻烦。 一个解决scheme是存储与收据应用程序identifierForVendor ,并要求应用程序发送整个收据,如果不匹配。 大多数情况下,您只是通知API发生了一个事务,并且在less数情况下,标识符不匹配,会发送一个新的收据。

  1. 作为iOS开发者,我们需要考虑如何恢复自动可更新订阅? 我们不清楚如果用户尝试使用我们的应用程序中的多个用户帐户使用iTunes帐户来恢复可能的情况,有什么防范,我们可以关注哪些苹果允许用户一次性购买订阅,并尝试恢复多个用户帐户?

恢复时,将创build一个具有新交易ID的新交易,但原始交易ID将相同。 如果在数据库中创build交易表,则可以确保交易,而且其原始交易只与单个用户相关联,从而防止用户使用不同的用户恢复其他设备上的交易,并获得对订阅的访问权限。

一个恢复的交易将被推到SKPaymentTransactionStateRestored队列,所以当这种情况发生时,我build议将收据发送到您的API并正常处理收据; 将任何新的交易关联到原始用户。

  1. 苹果将​​拒绝定制的家庭共享选项使用汽车可再生订阅选项?

我怀疑它,但我不是苹果,所以不要把我的话作为福音。 Spotify有一个类似的scheme称为“ Spotify家庭 ”,用户可以与他们的家人分享他们的Spotify帐户,但不知道这是否启用了他们的iTunes应用程序。

  1. 我们需要注意哪些问题,如果我们能够使用上述function,哪个苹果将无法处理?
  1. 你需要用户pipe理和家庭联系你自己的API
  2. 您的用户需要login/注册您的应用程序
  3. 您需要防止家庭用户购买,如果他们的父帐户已经有购买。
  4. 在数据库中保存收据和identifierForVendor。
  5. 使用validationAPI处理收据validation。
  6. 坚持一个事务表,并考虑这个表的自我引用,以便一个事务可以通过original_transaction_id属于一个原始事务。 确保transaction_id列是唯一的。
  7. 每次交易到期时validation收据。
  1. 如果我们正在使用iOS应用程序的上述function,有什么可能违反苹果指南和应用程序拒绝?

除了第17.2节,我在指南中没有看到任何内容:

要求用户共享个人信息(如电子邮件地址和出生date)以便运行的应用程序将被拒绝

我认为这一点有点矛盾,因为在17.5年它说:

包括帐户注册或访问用户现有帐户的应用程序必须包含隐私政策,否则将被拒绝

我想通过这个,这意味着用户必须能够使用该应用程序,而不需要注册,但我知道许多应用程序正是这样做的例子。