在 MKStoreKit 我购买自动更新订阅。如果您购买一年,则该方法检查订阅是否有效 isSubscriptionActive 返回 1。但如果我们假设一个月,则 expires-date 一旦小于当前日期。可能是什么问题呢?
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];
}