ios - 可分配给应用程序帐户的 Apple IAP 消费品购买

标签 ios in-app-purchase app-store

我们的应用程序允许用户创建更多供他们使用的内容。 Apple IAP 声明非消费品购买可以通过强制性 Restore Purchases 按钮恢复。我们应用程序中当前的购买流程如下所示:

  1. 用户通过 IAP 购买非消费性内容
  2. 接收代码发送到后端应用
  3. 如果收据根据 Apple API 得到验证 - 我们会在我们的应用程序中将内容添加到他的帐户。

这里的问题是 - 用户可以购买一些内容,然后登录到他所有 friend 的帐户并在那里恢复他的购买。

我在想这个问题的两个解决方案:

  1. 使非消耗性内容成为消耗性内容 - 我所说的消耗是指通过我们的 API 消耗它。我不确定苹果是否会允许我们这样做
  2. 在后端跟踪收据,如果用户想要恢复以前分配给另一个帐户的收据 - 忽略它。

我的任何提议是否有效,或者是否有其他方法可以防止我提到的此类剥削?

最佳答案

您不能为您的应用内购买设置消耗品类型,除非它与内部货币或类似的东西有关。 如果您的应用内购买旨在解锁某些内容,则它必须是不可消耗且可恢复的。

所以,我不推荐选项1。至于选项2,你可以尝试这样做:

1. Keep the list of receipts for all purchased products assigned to
every account in your system
2. When Restore purchases is pressed, get the list of purchased products via StoreKit and send it to your server. 
3. If they match, unlock the content, 
4. If they don't match, show an error, that some of requested content was assigned to another account.

关于ios - 可分配给应用程序帐户的 Apple IAP 消费品购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35084932/

相关文章:

objective-c - 检查我的应用程序用户使用的 iOS 版本

ios - 如何为 Apple Store(ionic 应用程序)正确设置英语以外的其他语言

app-store - 如果元数据被拒绝,我的下一步是什么?

android - 测试应用内计费 : "The publisher cannot purchase this item"

ios - 如何使用 CustomStringConvertible 和 RawRepresentable 组合类型指定函数参数的类型?

java - JSBridge 如何在 React-Native 中工作

ios - 有没有办法只在 VisionLabelDetector 中获得最高置信度的结果?

Android InApp Billing v3 - 测试多台设备问题

java - 如何在 Android 中验证 IAP?

ios - 在 iOS 中通过 ipv4 而不是 ipv6 路由网络