在应用程序中使用相同的 Apple 帐户但不同的用户帐户时禁用恢复 IAP

Posted

技术标签:

【中文标题】在应用程序中使用相同的 Apple 帐户但不同的用户帐户时禁用恢复 IAP【英文标题】:Disable restore IAP when same Apple account but different user account in application 【发布时间】:2016-07-18 14:37:04 【问题描述】:

在我的应用程序中,我有一些项目只为付费订阅的用户显示。用户可以通过电子邮件和密码登录到应用程序,并且可以注销并且在同一设备上可以登录不同的用户。

我的问题是手机中的 Apple ID 仍然相同。因此,当其他用户登录时,即使他没有支付任何费用,他也可以恢复购买。

所以我的问题是如何解决它?如何将 Apple 帐户连接到我的自定义帐户?或者至少在尝试恢复 IAP 时以某种方式检查此 Apple 帐户是否已经有此订阅但不同的用户已登录。其他应用程序如何做到这一点?谢谢

编辑: 我想在我的应用中使用自动续订订阅,但我不知道如何将它连接到我的自定义帐户系统。

【问题讨论】:

我认为 Apple 会拒绝使用此实现的应用程序。应用内购买需要与 AppleID 绑定,并且您不应该在用户访问 IAP 内容之前登录。由于 17.2 指南,我刚刚有几个应用被拒绝(现在被接受):developer.apple.com/app-store/review/guidelines 我已经在应用程序上工作过,我们做了我在下面描述的操作。但是,我们没有专门使用电子邮件,而是使用“用户名”。如果他们愿意,他们可以把它作为他们的电子邮件。使用该应用程序之前需要登录。 @r3c0d3 我找不到 17.2 指南。那在哪里? @omarojo 指南已重新组织。查看 3.1.2(a) 允许的用途(付款) 【参考方案1】:

当用户进行 IAP 时,您不会知道用于购买的 Apple ID。但是,您将知道的是购买的交易 ID。您将要使用您的自定义帐户存储原始购买的交易 ID。

当用户恢复时,您将确定 SKPaymentTransaction 的 originalTransaction 的 transactionIdentifier 是否与自定义帐户匹配。如果不是,那么您可以假设这是一个不同的用户。您可以在此处阅读更多相关信息:

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html

请注意,收据包含一个称为原始交易 ID 的字段。这是您将用于订阅以跟踪原始交易 ID 的内容。这是因为每次自动续订时,都会为自动续订生成一个新的交易 ID。收据实际上将包含所有购买。

在您的服务器上,您可能希望保存原始交易 ID 和收据。从本质上讲,您存储的元数据越多,如果您必须进行任何形式的双重检查交易,您的情况就会越好。

【讨论】:

在新设备上使用这个apple_id后,original_transaction_id会改变吗? @jiamo 只要 Apple ID 相同,original_transaction_id 就相同。

以上是关于在应用程序中使用相同的 Apple 帐户但不同的用户帐户时禁用恢复 IAP的主要内容,如果未能解决你的问题,请参考以下文章

在开发过程中更改 Apple 开发者帐户

更改沙盒帐户后,Apple IAP 恢复数据正在发送相同的收据

代码签名权利错误:相同的错误 - 不同的原因

同一个应用程序下的多个应用程序使用 Apple 登录

Apple:企业帐户,但部署到 App Store? [关闭]

从多个开发者帐户提交应用程序