自动续订订阅的到期日期少于当前日期

时间:2014-06-14 12:15:15

标签: ios subscription mkstorekit

在MKStoreKit中,我购买汽车可再生订阅。如果您购买一年,那么该方法检查订阅是否有效isSubscriptionActive返回1.但是如果我们假设一个月,一旦它小于当前日期就到期。可能是什么问题?

2014-06-22 16:11:45.160 ForTraderApp[3035:60b] expiresDate = 1402747114000.000000
2014-06-22 16:11:45.161 ForTraderApp[3035:60b] currentDate = 1403439105.161849

MKStoreKit v.5 ios7.1

- (BOOL) isSubscriptionActive:(NSString*) featureId
{
   MKSKSubscriptionProduct *subscriptionProduct = [self.subscriptionProducts   objectForKey:featureId];
   if(!subscriptionProduct.receipt) return NO;

   id jsonObject = [NSJSONSerialization JSONObjectWithData:subscriptionProduct.receipt options:NSJSONReadingAllowFragments error:nil];
   NSData *receiptData = [NSData dataFromBase64String:[jsonObject objectForKey:@"latest_receipt"]];

   NSPropertyListFormat plistFormat;
   NSDictionary *payloadDict = [NSPropertyListSerialization propertyListWithData:receiptData
                                                                    options:NSPropertyListImmutable
                                                                     format:&plistFormat
                                                                      error:nil];

    receiptData = [NSData dataFromBase64String:[payloadDict objectForKey:@"purchase-info"]];

    NSDictionary *receiptDict = [NSPropertyListSerialization propertyListWithData:receiptData
                                                                    options:NSPropertyListImmutable
                                                                     format:&plistFormat
                                                                      error:nil];

    NSTimeInterval expiresDate = [[receiptDict objectForKey:@"expires-date"] doubleValue]/1000.0f;

    NSLog(@"expiresDate = %f", [[receiptDict objectForKey:@"expires-date"] doubleValue]);
    NSLog(@"date = %f", [[NSDate date] timeIntervalSince1970]);

    return expiresDate > [[NSDate date] timeIntervalSince1970];
}

0 个答案:

没有答案