2014-01-16 36 views
4

我正在使用RMStore库在我的iOS应用中使用自动更新订阅。它适用于购买,但我找不到任何文档如何检查RMStore当前订阅是否仍然活动?iOS SDK自动可更新订阅与RMStore - 如何验证活动订阅与否?

代码检查购买的产品并不在这里工作:

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

此代码始终是表明订阅购买(因为它),但不检查该订阅已按日期过去了。

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

摘要:我只需要确认订阅@“com.fanfun.apptestsubscription1”至今仍然是(当前日期)或者没有激活。请为此简单检查提供示例代码。

回答

1

我不知道你使用的库。但是,如果您有权访问收据本身,您可以使用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

UPDATE

[RMAppReceipt containsActiveAutoRenewableSubscriptionOfProductIdentifier:identifier forDate:date]

应该做的伎俩

+0

我怎样才能获得收据应用内购买? – Dmitry

+0

RMStore已经有方法来验证receipes(它用OpenSSL解析食谱),我想要使用它。我无法编写自己的方法来解析receipes,这对我来说太难了。 – Dmitry

+1

实际上看着RMStore库的来源,有一个名为RMAppReceipt的类(https://github.com/robotmedia/RMStore/blob/master/RMStore/Optional/RMAppReceipt.h)。这个类有一个属性“subscriptionExpirationDate”(ln 152)。现在问题仍然是如何获得RMApp收据... – Denis

6

我想我找到了一个解决方案,它的工作:

RMAppReceipt* appReceipt = [RMAppReceipt bundleReceipt]; 

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

请记住,如果收据不可用,'bundleReceipt'可能会返回nil。如果是这样,您将需要先刷新收据(通过RMStore中的'refreshReceipt')。 – hpique

+1

@hpique什么是刷新它的最佳方式?在我的应用程序中,当用户进入某个屏幕时,我必须检查活动订阅。如果订阅处于活动状态,用户可获得一些优惠,如广告区块每次查找活动订阅时,我都可以检查无收据,如果检查失败,请求用户在询问AppleID密码之前刷新它。但缺点是,当他第一次访问这个屏幕时,每个用户都会看到这个对话框。是否有任何有关收据刷新的最佳做法以尽量减少令人不快的警报? – Spail

+0

@Spail你找到了刷新它的最佳扫描仪吗? – JERC