【问题标题】:iOS sandbox environment auto-renewal subscriptioniOS沙盒环境自动续费订阅
【发布时间】:2011-12-23 10:29:00
【问题描述】:

我有以下关于 iOS 自动更新订阅的问题

a) 自动续订订阅真的在沙盒环境中自动续订吗?问题似乎是订阅不会自动更新,尽管文档说即使在沙盒环境中它也应该发生 6 次。

b) 我们是否需要调用 restoreCompletedTransactions 来获取自动延期订阅的新收据,或者 iOS 自动调用 -paymentQueue:updatedTransactions: 方法? (我猜它会自动调用“启动”和“从背景中旋转”不确定)

c) 您如何在多台设备上处理相同的订阅?这可以通过restoreCompletedTransactions来处理,但是调用它会提示用户密码,所以每次应用启动时调用它不是很方便。

【问题讨论】:

    标签: iphone in-app-purchase storekit auto-renewing


    【解决方案1】:

    此外,in Apple's documentation 行似乎被误解了

    续订速度加快,自动续订订阅每天最多续订六次。这让您可以测试您的应用如何处理订阅续订、订阅失效以及包含间隔的订阅历史记录。

    这似乎意味着每天所有订阅只会续订 6 次。而不是每次订阅都会在取消之前续订 6 次。这让我很困惑。

    它似乎也是在 24 小时内。在特定时间不刷新。例如,我在上午 11 点进行了订阅,但没有续订。我在下午 2 点又做了一个,更新了 6 次。

    【讨论】:

    • 这种情况下,如何模拟用户取消订阅?用户或系统取消后,json 响应会是什么?要处理哪些标志?
    【解决方案2】:

    a) 自动续订订阅在沙盒环境中不一致。有时订阅会在结束前续订多次(大约 5 次)。其他时候根本不会更新。

    b)(仅限 iOS6 交易收据)您无需致电restoreCompletedTransactions 来检查订阅状态如果您正在存储以前的收据(最好在您的服务器上)。只需获取您为该用户存储的任何订阅收据,然后将其提交到 App Store 进行验证。他们会回复latest_receipt_info,包括expires_date,您可以使用它来确定当前的订阅状态。

    c) 您应该提示新用户“恢复以前的购买”,此时您调用 restoreCompletedTransactions。然后将其中一张收据(最好来自您的服务器)提交到 App Store 进行验证,以获取有关交易的解码详细信息。在收据信息中查找密钥 original_transaction_id。这将始终包含该用户第一次向您发起订阅的 id。如果您将此 ID 与系统中的其他 ID 进行比较,您应该能够确定哪些设备共享一个 Apple 帐户。 (由于 Apple 不允许您查看用户的 Apple ID,因此这是识别跨多个设备的帐户的最佳方式。

    类似于这个问题: iOS auto-renew expired at the end of current subscription period

    【讨论】:

    • 已删除并添加为新答案
    • @andrew 在沙盒应用内购买测试中,我在同一组中购买了 2 件产品。我认为应该只订阅最新的,而同一组中的其他人会自动取消。是吗?如果是,那么为什么我在同一组中购买了 2 件商品?
    • 就您的观点 a) 而言,这可能是因为每个沙盒测试人员登录每 8 小时窗口限制 5 次续订
    • @BradThomas 你有这方面的文件吗?有这样的规则会非常好,而不是我目前的最佳理解是“沙盒是垃圾,测试不可靠”。
    • @Meekohi 我没有手的参考,我必须像你一样用谷歌搜索它。但如果我没记错的话,我很确定我找到了这些数字的可靠参考。
    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 2018-08-02
    • 2013-06-30
    • 2016-08-16
    • 2017-04-12
    • 1970-01-01
    • 2016-12-08
    • 2017-03-28
    相关资源
    最近更新 更多