【问题标题】:iOS SDK Auto Renewable subscription with RMStore - how to validate active subscription or not?带有 RMStore 的 iOS SDK Auto Renewable 订阅 - 如何验证有效订阅?
【发布时间】:2014-02-05 11:32:41
【问题描述】:

我正在使用 RMStore 库在我的 iOS 应用程序中处理自动更新订阅。它非常适合购买,但我找不到任何文档如何通过 RMStore 检查当前订阅是否仍然有效?

检查购买产品的代码在这里不起作用:

 if([persistence isPurchasedProductOfIdentifier:SUBSCRIPTION_1]) { ... }

此代码始终显示订阅已购买(因为它是)但不检查此订阅是否已通过日期。

我在 RMAppReceipe.h 文件中看到方法“isActiveAutoRenewableSubscriptionForDate”,但我没有找到任何文档如何使用 RMStore 在我的应用中检索订阅收据以及如何检查此收据使用 isActiveAutoRenewableSubscriptionForDate 方法。请帮忙。

总结:我只需要检查订阅@“com.fanfun.apptestsubscription1”在今天(当前日期)是否仍然有效。请提供此简单检查的示例代码。

【问题讨论】:

    标签: ios ios6 ios7 in-app rmstore


    【解决方案1】:

    我想我找到了一个解决方案并且它有效:

    RMAppReceipt* appReceipt = [RMAppReceipt bundleReceipt];
    
    NSLog(@"Is subscription 1 active: %d", [appReceipt containsActiveAutoRenewableSubscriptionOfProductIdentifier:SUBSCRIPTION_1 forDate:[NSDate date]]);
    

    【讨论】:

    • 请记住,如果收据不可用,bundleReceipt 可能会返回 nil。如果是这样,您需要先刷新收据(通过 RMStore 中的refreshReceipt)。
    • @hpique 刷新它的最佳方法是什么?在我的应用程序中,当用户进入某个屏幕时,我必须检查活动订阅。如果订阅是活跃的,用户会获得一些好处,比如广告屏蔽。每次我寻找有效订阅时,我都可以检查零收据,如果检查失败,请在询问 AppleID 密码之前要求用户刷新它。但缺点是每个用户第一次访问此屏幕时都会出现此对话框。是否有任何关于收据刷新的最佳做法,以尽量减少令人不快的警报?
    • @Spail 你找到刷新它的最佳方法了吗?
    【解决方案2】:

    我不知道你使用的那个库。但是,如果您可以访问收据本身, 您可以对收据进行base64解码,以在“过期日期”字段中获取收据的持续时间。

    同时检查这些链接:

    https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW2

    https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html

    更新

    [RMAppReceipt containsActiveAutoRenewableSubscriptionOfProductIdentifier:identifier forDate:date]

    应该做的伎俩

    【讨论】:

    • 如何通过应用内购买访问收据?
    • RMStore 已经有验证收据的方法(它使用 OpenSSL 解析食谱),我想使用它。我无法编写自己的方法来解析收据,这对我来说太难了。
    • 其实看RMStore库的源码,有一个类叫RMAppReceipt(github.com/robotmedia/RMStore/blob/master/RMStore/Optional/…)。这个类有一个属性“subscriptionExpirationDate”(ln 152)。现在的问题仍然是如何获得 RMApp Receipt...
    • @Denis 这次更新救了我的命!我花了好几个小时才弄清楚这件事……可惜它不在图书馆的文档上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2020-07-25
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多