【发布时间】:2020-11-26 01:46:13
【问题描述】:
我正在开发一个应用程序,该应用程序使用户能够使用我的服务上的帐户登录和注销。我还想为用户提供购买自动续订订阅的功能。
我不知道如何让用户使用我的服务上的帐户登录和退出并购买自动续订订阅,因为 StoreKit 购买与设备登录的 Apple ID 相关联,并且无法与我的服务上的帐户相关联我的系统。
例如,假设:
- 某人拥有一部 iPhone,并在该设备上使用其 Apple ID 登录 iOS:
bob@icloud.com - 此人下载我的应用程序,并在我的帐户系统中创建
userA。 - 作为
userA,他们购买了自动更新订阅。此购买存储在用户bob@icloud.com的 StoreKit 收据上。 - 在不更改 Apple ID 的情况下,此人会退出我的应用并在我的系统上创建
userB。 - 此人尝试为
userB购买相同的自动续订订阅。当他们这样做时,什么也没有发生。具体来说,this code:
SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:[self.products objectForKey:identifier]];
//...
[[SKPaymentQueue defaultQueue] addPayment:payment];
不提示userB购买,因为就StoreKit而言,他们已经拥有它,因为他们在设备上仍然是bob@icloud.com。
即使我将订阅信息存储在我的服务器上(我这样做了),我也不确定如何补救这种情况,除非我的应用的 iOS 版本只允许 Apple 登录。 这是因为 Apple 登录与设备上的当前 Apple ID 严格绑定。
这真的是让用户在同时具有 IAP 自动续订订阅的应用中的唯一方法吗?我有searched the web,好像是这样的。
【问题讨论】:
-
每个 Apple ID 组的订阅限制为 1 个。如果您有多个用户帐户,他们将无法分别购买,除非他们来自不同的 Apple ID。
-
谢谢。因此,基本上,在具有订阅的应用程序上创建用户帐户的唯一方法是使用 Apple 登录?这样应用登录与手机登录相同。
-
不,您不必使用 Apple 登录。如果您使用您的注册系统。您需要为登录用户存储收据。就像说用户 A 现在已订阅。这确实给恢复带来了复杂性。如果用户 B 尝试恢复购买,那应该不起作用,您需要与用户沟通原因。
-
使用 Apple 登录可以简化恢复。如果您的产品支持多平台,那么您仍然需要为用户保存收据,当然还需要在所有平台上支持 Apple 登录。
-
对不起,我仍然不确定我是否理解:假设用户 A 使用我的应用程序的登录系统登录,创建自动续订订阅(使用登录的 Apple ID),然后退出.然后用户 B 使用我的应用程序的登录系统登录。即使我将用户 A 的订阅状态存储在我的服务器上,当用户 B 尝试进行订阅时,它仍然是手机本地的同一个 Apple ID(永远不会更改),因此 StoreKit 不会让用户 B 订阅。对吗?