5

我有一个 iOS 应用程序(和一个网站)。应该有一个高级用户选项,即如果他/她是高级用户,他/她可以访问特殊内容。用户可以按月或按年成为高级用户。

第一个问题 - Apple 是否允许该设施在网站上以及通过 InAppPurchase 提供相同的产品供购买(遵循 Apple 的规则 - 应用程序中不会有任何链接或指示可以购买相同的产品网站)。因此,如果用户通过 InAppPurchase 购买高级帐户,他/她可以像高级用户一样登录网站,反之亦然。

如果允许,使用消耗型产品实现高级用户功能并让服务器管理所有内容或使用不可更新订阅会更好吗?

Consumable Approach 执行 InAppPurchase,然后向服务器发送请求说当前用户是一个月/年的高级用户,然后每次应用启动/用户登录时,调用 API 来检查当前用户是否是高级用户用户与否。

需要处理的棘手情况是 1. 当用户使用应用程序时,他/她的高级用户状态正好到期。2. 如果InAppPurchase 完成后网络中断并且对服务器的请求不完整。

不可更新的订阅方法我不确定它是如何工作的,但我猜它会类似于消耗品。

这两种方法中哪一种更适合恢复以前的交易?

4

1 回答 1

5
  1. 是的,只要您在应用程序中提供高级功能(例如,在我们与 iOS 相关联的 Facebook 应用程序中,我们为相同功能实现了 Facebook 积分)
  2. 我们的应用程序(它使用应用程序内的消耗品来启用高级功能)已被拒绝了几次,直到我们切换到不可更新订阅。高级功能有时间限制,Apple 拒绝的原因是,如果高级功能涉及时间而不是附加功能,您必须使用不可续订订阅,因为这是它的目的

棘手的案例实际上并没有那么棘手。对于第一个,让应用程序从服务器检索到期时间(您确实在购买订阅后保存了它?;-))并且当用户尝试使用高级功能时,请执行检查以确保他仍然被允许。其次,将购买保存在手机中,然后将收据发送到服务器进行验证。只有当服务器可以访问并说收据有效时,才将其从手机中删除。否则,您可以在启动时检查手机中是否保存了未发送的收据,您应该重新发送到服务器进行验证。

于 2013-05-02T06:06:43.633 回答