我正在为iOS实施Auto-renewable InApp Purchase。第一个月工作正常。但我无法知道用户的订阅是否自动续订意味着当前InApp购买的状态是什么。
在StackOverflow上研究了这么多答案后,我能够理解我必须提供恢复按钮来恢复事务。我也实现了它,并且它将我的所有交易都提供给日期。所以,我无法得到我的最后一笔交易。因此,请帮助了解上次自动续订交易的状态,以便我能够更新服务器上的状态。
以下是我用来恢复交易的代码:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
并按如下方式实施其代表:
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
NSLog(@"%@",queue );
NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]);
NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init];
NSLog(@"received restored transactions: %zd", queue.transactions.count);
for (SKPaymentTransaction *transaction in queue.transactions)
{
NSString *productID = transaction.payment.productIdentifier;
[purchasedItemIDs addObject:productID];
NSLog (@"product id is %@" , productID.description);
NSLog (@"observationInfo is %@" , transaction.payment.productIdentifier.observationInfo);
// here put an if/then statement to write files based on previously purchased items
// example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry}
}
}
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{
NSLog(@"Restore Error... %@",error.description);
}
答案 0 :(得分:0)
如果应用程序正在运行且事务处理正在更新,我认为事务还原不起作用。请参阅StoreKit指南: -
成功续订订阅后,Store Kit会添加一个 用于续订事务队列的事务。你的应用检查 启动时的事务队列并以相同的方式处理续订 与任何其他交易一样。请注意,如果您的应用已在运行 订阅更新时,不调用事务观察者; 您的应用在下次启动时会发现续订。
重新启动应用程序后,事务恢复功能可以恢复当前自动续订的事务。
在备用时,如果要在不重新启动应用程序的情况下检查交易是否已续订,您可以手动刷新“应用程序收据”。