From c315e363c88229e227374f6130954acb99181055 Mon Sep 17 00:00:00 2001 From: Rik Renich Date: Tue, 11 Oct 2016 12:10:36 -0400 Subject: [PATCH] A receipt contains an active auto renewable subscription for a product and a date if any transaction for the product is active for the date. The prior code would give a false negative if the date being tested is within the subscription time frame of a transaction that is not the most recent transaction. --- RMStore/Optional/RMAppReceipt.m | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/RMStore/Optional/RMAppReceipt.m b/RMStore/Optional/RMAppReceipt.m index 68aa7147..99b0d231 100644 --- a/RMStore/Optional/RMAppReceipt.m +++ b/RMStore/Optional/RMAppReceipt.m @@ -162,19 +162,12 @@ - (BOOL)containsInAppPurchaseOfProductIdentifier:(NSString*)productIdentifier -(BOOL)containsActiveAutoRenewableSubscriptionOfProductIdentifier:(NSString *)productIdentifier forDate:(NSDate *)date { - RMAppReceiptIAP *lastTransaction = nil; - for (RMAppReceiptIAP *iap in self.inAppPurchases) { - if (![iap.productIdentifier isEqualToString:productIdentifier]) continue; - - if (!lastTransaction || [iap.subscriptionExpirationDate compare:lastTransaction.subscriptionExpirationDate] == NSOrderedDescending) - { - lastTransaction = iap; - } + if ([iap.productIdentifier isEqualToString:productIdentifier] && [iap isActiveAutoRenewableSubscriptionForDate:date]) return YES; } - return [lastTransaction isActiveAutoRenewableSubscriptionForDate:date]; + return NO; } - (BOOL)verifyReceiptHash