使用https://sandbox.itunes.apple.com/verifyReceipt网址验证收据。
这是您可以使用的示例代码:
NSString *appStoreReceiptPath = NSBundle.mainBundle.appStoreReceiptURL.path;
if(appStoreReceiptPath) {
NSData *receiptData = [NSData dataWithContentsOfFile:appStoreReceiptPath];
if(receiptData == nil) return;
NSDictionary *receiptDictionary = @{@"receipt-data": [receiptData base64Encoding],
@"password": SharedSecret};
NSData *requestData = [NSJSONSerialization dataWithJSONObject:receiptDictionary options:0 error:nil];
// ReceiptURL is - @"https://sandbox.itunes.apple.com/verifyReceipt"
NSURL *storeURL = [NSURL URLWithString:ReceiptURL];
NSMutableURLRequest *storeRequest = [[NSMutableURLRequest alloc] initWithURL:storeURL];
storeRequest.HTTPMethod = @"POST";
storeRequest.HTTPBody = requestData;
NSURLSession *session = [NSURLSession sessionWithConfiguration:NSURLSessionConfiguration.defaultSessionConfiguration];
[[session dataTaskWithRequest:storeRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if(!error) {
NSError *jsonError = nil;
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
if(!jsonError) {
for(NSDictionary *in_app in dictionary[@"receipt"][@"in_app"]) {
NSString *purchaseDateString = in_app[@"purchase_date"];
NSString *expiresDateString = in_app[@"expires_date"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss VV"];
NSString *productId = in_app[@"product_id"];
NSString *purchaseDate = [dateFormatter dateFromString:purchaseDateString];
NSString *expiresDate = [dateFormatter dateFromString:expiresDateString];
}
}
}
}] resume];
}
并使用此方法检测订阅是否处于活动状态。
- (BOOL) isActiveSubscriptionBought:(NSDate *) purchaseDate expires:(NSDate*) expiresDate {
if(self.expiresDate == nil) return false;
NSDate *date = [NSDate date];
return (([date compare:purchaseDate] != NSOrderedAscending) &&
([date compare:expiresDate] != NSOrderedDescending));
}