ios - 当用户可以登录和退出应用程序时处理非消耗性应用程序内购买

标签 ios in-app-purchase storekit

我最近有一个 iOS 应用程序被 Apple 拒绝,因为它使用消耗性 IAP 项目将“用户”从白银升级到黄金,而根据 Apple 指南,它应该是非消耗性项目。但是,我们使用消耗品的理由如下:

  • 该应用有自己的用户身份验证系统,绑定(bind)到后端。一旦购买了消耗品,用户对象就会被修改为黄金类型。因此,默认情况下,他们的购买将在其他设备上可用,前提是他们使用正确的应用用户登录。

  • 如果我们要使用非消耗型,则用户可以购买升级并继续注销应用程序,以不同的“应用程序”用户身份重新登录,点击恢复交易按钮(如果该应用使用的是非消耗品,则需要)并免费将另一位用户升级到黄金。

在这种情况下,正确的做法是什么?在我看来,我们有以下选择:

  1. 为了让 Apple 高兴,更改为非消耗品,接受用户可能能够免费升级多个帐户的可能性。虽然这在现实中可能不太可能发生那么多

  2. 坚持消费品并更改我们购买类型的一些措辞,以更清楚地表明如果您切换应用程序用户,您将来可能会再次购买它。或者甚至尽可能地拥有一种应用内货币(对于只有一种购买类型的应用来说似乎有点过分了)

我是不是漏掉了什么,这似乎是一个灰色地带,几乎没有可用的信息。本质上,我们不想将升级与 AppleID 绑定(bind),我们希望它们与应用程序用户绑定(bind)。有什么办法既可以实现非消耗品又可以防止用户升级多个帐户?或者,我们如何才能以这种方式操纵购买事件,使消费品被认为是合适的?

提前致谢

最佳答案

如果您使用服务器端收据验证,您可以使用服务器上的用户帐户存储购买的原始交易 ID。

当用户在服务器上购买非消费品支票时,如果您的数据库中存在不同用户的原始交易 ID

关于ios - 当用户可以登录和退出应用程序时处理非消耗性应用程序内购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825223/

相关文章:

ios - 如何使用 IAP 在不同国家以适当的货币显示价格

ios - 如何有效管理大量的iOS应用内购买?

ios - 应用内购买 - 如何确定是否已经购买?

ios - iOS 13 SceneDelegate 上的 WKWebView 警报崩溃

ios - layer被constraints更新后调用@IBDesignable中的@IBInspectable set

ios - 无聊的 SSL 握手失败和复制 Identity Cred 时出错

ios - 我的应用程序中不同登录用户的应用程序内购买

ios - 付款队列 :(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions is not called while restoreCompletedTransactions

iphone - 我可以在 iPhone/iPad 应用程序中使用 PayPal 吗?

objective-c - 如何将 tableview 单元格作为参数传递,并仅将图像加载到相应的 tableview 单元格(在 iOS 中单击照片按钮)