自動再生可能サブスクリプションを実装しています。その中で、以下の質問があります
有効期限が切れた後でも、ユーザーはサブスクリプション コンテンツを復元できますか?
もしそうなら、どうすればそれらを検証してダウンロードさせることができますか
自動再生可能サブスクリプションを実装しています。その中で、以下の質問があります
有効期限が切れた後でも、ユーザーはサブスクリプション コンテンツを復元できますか?
もしそうなら、どうすればそれらを検証してダウンロードさせることができますか
基本的に、電話する必要があり、[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
復元されたトランザクションが返されます。originalTransaction
物件を見たほうがいいです。各取引の取引日がわかります (期限切れのものも)。次に、製品 ID を確認すると、アプリは各製品 ID のサブスクリプションの期間を知る必要があります。また、各トランザクションの開始日と期間がわかっているため、サブスクリプションが有効であった期間を計算できます。それらを他のトランザクションと同様に検証します-サーバーに送信し、サーバーから送信されますhttp://buy.itunes.apple.com/verifyReceipt
(テスト用に購入をサンドボックスに変更します)。
-(void)restoreSubscription:(SKPaymentTransaction *)transaction {
NSUserDefaults *defaultData = [NSUserDefaults standardUserDefaults];
NSArray *productID = [defaultData objectForKey:@"productID"];
NSArray *subMonths = [defaultData objectForKey:@"SubMonth"];
NSLog(@"%@",productID.description);
NSLog(@"Array ==%@",objContantManeger.subscriptionMonth);
NSMutableArray *arrID = [[NSMutableArray alloc] initWithArray:objContantManeger.subscriptionProductID];
NSMutableArray *arrMonth = [[NSMutableArray alloc] initWithArray:subMonths];
NSDate *date;
NSDate *exDate;
for (int i =0;i<arrID.count;i++)
{
NSString *idStr =[arrID objectAtIndex:i];
NSString *monthStr = [arrMonth objectAtIndex:i];
int addsubMonth = [monthStr intValue];
NSLog(@"%i--%@",i,idStr);
NSLog(@"%i-->%i",i,addsubMonth);
NSLog(@"Transaction Date--%@",transaction.originalTransaction.payment.productIdentifier);
if ([transaction.originalTransaction.payment.productIdentifier isEqualToString:idStr])
{
NSLog(@"Date..%@",transaction.originalTransaction.transactionDate);
date = transaction.originalTransaction.transactionDate;
NSString *dateStr = [date description];
NSRange range;
// year
range.location = 0;
range.length = 4;
NSString *yearStr = [dateStr substringWithRange:range];
int year = [yearStr intValue];
NSLog(@"%i",year);
// month
range.location = 5;
range.length = 2;
NSString *monthStr = [dateStr substringWithRange:range];
int month = [monthStr intValue];
NSLog(@"%i",month);
// day
range.location = 8;
range.length = 2;
NSString *dayStr = [dateStr substringWithRange:range];
int day = [dayStr intValue];
NSLog(@"%i",month);
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
NSLog(@"addsubMonth---)%i",addsubMonth);
[components setYear:year];
[components setMonth:month+addsubMonth];
[components setDay:day];
NSLog(@"Expire DATE-->%@",[calendar dateFromComponents:components]);
exDate = [calendar dateFromComponents:components];
NSUserDefaults *defult = [NSUserDefaults standardUserDefaults];
[defult setObject:exDate forKey:@"subexpiredate"];
[defult synchronize];
// return;
}
}
このメソッドを使用してサブスクリプションを検証できます。これは、サブスクリプションの開始日と有効期限を提供するためです。
チップ -
アプリケーション デリゲート メソッド applicationDidEnterBackground を使用して、チェック サブスクリプションを実装します。