【发布时间】:2014-10-19 21:37:56
【问题描述】:
我目前在我的 IAP 屏幕上有一个恢复按钮,但是在通过苹果提交并上线后,我的朋友在他的设备上对其进行了测试,当他这样做时,他能够恢复购买而无需在首先,现在当我调试代码时,我注意到点击恢复会运行这个完成委托方法,该方法又会运行我的方法来解锁某些功能。
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
我的代码如下:
#pragma mark Restore Purchases
#pragma mark -
-(void)restorePurchaseIAP{
// ask to restore
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}
#pragma mark SKPaymentTransactionObserver
#pragma mark -
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
[[SKPaymentQueue defaultQueue]
finishTransaction:transaction];
[delegate itemPurchased];
break;
case SKPaymentTransactionStateFailed:
[delegate itemPurchasedFailed];
[[SKPaymentQueue defaultQueue]finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
NSLog(@"restored state");
[[SKPaymentQueue defaultQueue]finishTransaction:transaction];
break;
default:
break;
}
}
}
#pragma mark SKPaymentTransactionObserver
#pragma mark -
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue{
NSLog(@"restored state Completed");
[delegate purchaseRestored];
}
-(void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error{
NSLog(@"restore has FAILED");
}
即使我没有使用苹果的用户帐户登录,也会发生这种情况。我还注意到,当我第一次在朋友的设备上调试时,如果我尝试购买,然后在提示我 IAP 价格和确认时取消,恢复按钮将恢复购买。
我是否认为当我调用 restoreCompletedTransactions 时,苹果应该只确认并运行:
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue{
如果已经购买了 IAP,或者我应该在某处检查包裹的方法?
【问题讨论】:
标签: ios in-app-purchase restore