【问题标题】:Restoring expired auto-renewable subscriptions恢复过期的自动更新订阅
【发布时间】:2013-07-30 09:07:59
【问题描述】:

按照 Apple 指南,可恢复自动更新订阅 -> 设备可以将 restoreCompletedTransactions 发送到 Apple 服务器,Apple 将回复所有已完成交易的列表。

我的问题是,Apple 是否会发送所有已完成的交易? (仅与购买非消耗性产品和自动更新订阅有关)

例如:在我的应用中有每月自动更新订阅。用户在 2012 年 1 月安装了我的应用程序。2012 年 5 月,他禁用了订阅自动续订。一年后,2013 年 1 月,他再次订阅。 2013 年 3 月,他再次禁用订阅自动续订。最后,在 2013 年 6 月,他再次订阅。 2013年7月尝试使用“恢复购买”功能,苹果会发送什么信息?

Apple 会向该设备发送哪些信息? Apple 会发送有关所有订阅的信息,即使是那些过期的订阅?

附:问题的意义在于获得使用自动更新订阅和恢复有关它们的信息的真实体验。在沙盒中进行测试有时会返回非常奇怪的结果。

编辑:好的,所以我已经有足够的测试表明,是的,Apple 会发送所有已完成的交易,包括交易,与过期订阅相关,即使之后还有另一个订阅。

【问题讨论】:

    标签: ios in-app-purchase restore subscription auto-renewing


    【解决方案1】:

    是的,您将获得与该苹果 ID 相关的所有购买(包括过期的)。您可以在委托回调中过滤掉它们,只将最新的发送到您的服务器。

    - (void)handleRestoredTransaction:(SKPaymentTransaction *)transaction
    {
    
    NSLog(@"Somehow a transaction was restored.");
    
    NSDate* receiptPurchaseDate = transaction.transactionDate;
    NSDate* currentDate = [NSDate date];
    
    NSTimeInterval daysPassedSincePurchase = [currentDate timeIntervalSinceDate: receiptPurchaseDate] / SECONDS_PER_DAY;
    
    if ([transaction.originalTransaction.payment.productIdentifier isEqualToString: monthlySubscriptionProductIdentifier])
    {
        if (daysPassedSincePurchase <= DAYS_PER_MONTH)
        {
            // send the transaction receipt to your servers.
            [self handlePurchasedTransaction: transaction];
        }
    }
    else if ([transaction.originalTransaction.payment.productIdentifier isEqualToString: yearlySubscriptionProductIdentifier])
    {
        if (daysPassedSincePurchase <= DAYS_PER_YEAR)
        {
            [self handlePurchasedTransaction: transaction];
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      “Store Kit 提供内置功能来恢复非消耗品、自动更新订阅和免费订阅的交易。要恢复交易,您的应用程序调用支付队列的 restoreCompletedTransactions 方法。支付队列向 App 发送请求Store 来恢复交易。作为回报,App Store 会为之前完成的每个交易生成一个新的恢复交易。恢复交易对象的 originalTransaction 属性保存原始交易的副本。您的应用程序通过检索原始交易来处理恢复交易并使用它来解锁购买的内容。Store Kit 恢复所有之前的交易后,它通过调用他们的 paymentQueueRestoreCompletedTransactionsFinished: 方法通知支付队列观察者" -- Apple Docs

      【讨论】:

        猜你喜欢
        • 2014-04-17
        • 1970-01-01
        • 1970-01-01
        • 2017-08-20
        • 2016-12-24
        • 2016-03-25
        • 2018-05-23
        • 2013-11-24
        • 1970-01-01
        相关资源
        最近更新 更多