我试图弄清楚当用户尝试恢复In App Purchase但是没有购买时,我是否收到了回复消息。
现在,只要用户点按restoreButton
,我就会停用restoreButton
。
- (IBAction)purchaseRestore:(id)sender {
NSLog(@"4 IBAction Purchase Restore Method: start");
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
NSLog(@"4 Purchase Restore: SKPayment Queue two lines... log in user");
restoreButton.enabled = NO;
NSLog(@"4 Restore button enabled: No");
}
因此,如果他们点击restoreButton
,并且无法恢复,那么restoreButton
只会保持灰色。
我想做UIAlert
之类的事情或更改restoreButton
文字,如果碰巧说“#34};你没有任何要恢复的项目&#34 ;但是我想我需要从Apple那里得到一些消息说“没有要恢复的项目”#34;所以我可以解雇那些代码。
如果需要,请点击我的updatedTransactions
代码:
case SKPaymentTransactionStateRestored:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
NSLog(@"5 Finish Transaction");
restoreButton.hidden = YES;
NSLog(@"5 restore button hidden: Yes");
[self showButtonThree];
NSLog(@"5 Show Button Three");
NSLog(@"5 Restored: End");
break;
有什么想法吗?谢谢!
更新
试过这个:
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
NSLog(@"Completed Transactions Finished");
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
@"Restored succesfully" message:nil delegate:
self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alertView show];
}
但是,是否存在要恢复的交易。我曾经假设,如果没有可以恢复的交易,这将会被调用,但有意义的是它不会:
-(void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error {
NSLog(@"Completed Transactions Failed with Error");
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
@"Not restored succesfully" message:nil delegate:
self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alertView show];
}
答案 0 :(得分:2)
来自restoreCompletedTransactions
的官方Apple文档交付交易后,支付队列调用 观察者的
paymentQueueRestoreCompletedTransactionsFinished:
方法。 如果在恢复事务时发生错误,观察者将会 通过它通知paymentQueue:restoreCompletedTransactionsFailedWithError:
方法。