您如何处理具有非 Apple 帐户系统的应用程序中的自动续订订阅?
How do you handle auto-renewable subscriptions in apps that have a non-Apple account system?
我正在开发一款应用程序,让用户能够使用我服务中的帐户登录和注销。我还想为用户提供购买自动续订订阅的能力。
我不知道如何让用户使用我服务上的帐户登录和注销以及购买自动续订订阅。这是因为 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 Sign In 严格绑定到设备上的当前 Apple ID。
这真的是让用户进入同时具有 IAP 自动续订订阅的应用程序的唯一方法吗?我有 searched the web,好像是这样。
如果我理解,你想做的是:
• 在您的系统上有两个用户,A 和 B
• 实际上,A 和B 是同一个人。 (叫她“简”。)
• 事实上,简(显然)有相同的 iPhone,无论她是 your-system-A 还是 your-system-B。让我们将 iPhone 称为 iPhone 7778636728637
• 您提供的订阅名为“dragon-eggs-renewable”
所以:
当7778636728637想买“dragon-eggs-renewable”,
你想卖掉她
• A
的“dragon-eggs-renewable”
然后卖掉她
• B
的“dragon-eggs-renewable”
那是完全不可能的。
订阅“dragon-eggs-renewable”仅到phone。
Sign-on-with-Apple 无关。 †
订阅人数 phone,仅此而已。
但是有办法解决这个问题:
诀窍是。有说三个个订阅,
- "dragon-eggs-renewable"
- "dragon-eggs-renewable-supp1"
- "dragon-eggs-renewable-supp2"
在你的系统中,如果他们是用户A,就卖给他们“dragon-eggs-renewable”。
然而,如果你意识到他们是用户 B,卖掉他们“dragon-eggs-renewable-supp1”
明白我的意思了吗?
出售多个订阅并不少见。 (例如“powerup1”...“powerup2”...等)
希望它有用,希望我理解了!
除非2020年底有什么新的关于sign-on-with-Apple,否则就是以上情况!
我正在开发一款应用程序,让用户能够使用我服务中的帐户登录和注销。我还想为用户提供购买自动续订订阅的能力。
我不知道如何让用户使用我服务上的帐户登录和注销以及购买自动续订订阅。这是因为 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 Sign In 严格绑定到设备上的当前 Apple ID。
这真的是让用户进入同时具有 IAP 自动续订订阅的应用程序的唯一方法吗?我有 searched the web,好像是这样。
如果我理解,你想做的是:
• 在您的系统上有两个用户,A 和 B
• 实际上,A 和B 是同一个人。 (叫她“简”。)
• 事实上,简(显然)有相同的 iPhone,无论她是 your-system-A 还是 your-system-B。让我们将 iPhone 称为 iPhone 7778636728637
• 您提供的订阅名为“dragon-eggs-renewable”
所以:
当7778636728637想买“dragon-eggs-renewable”,
你想卖掉她
• A
的“dragon-eggs-renewable”然后卖掉她
• B
的“dragon-eggs-renewable”那是完全不可能的。
订阅“dragon-eggs-renewable”仅到phone。
Sign-on-with-Apple 无关。 †
订阅人数 phone,仅此而已。
但是有办法解决这个问题:
诀窍是。有说三个个订阅,
- "dragon-eggs-renewable"
- "dragon-eggs-renewable-supp1"
- "dragon-eggs-renewable-supp2"
在你的系统中,如果他们是用户A,就卖给他们“dragon-eggs-renewable”。
然而,如果你意识到他们是用户 B,卖掉他们“dragon-eggs-renewable-supp1”
明白我的意思了吗?
出售多个订阅并不少见。 (例如“powerup1”...“powerup2”...等)
希望它有用,希望我理解了!
除非2020年底有什么新的关于sign-on-with-Apple,否则就是以上情况!