在我的In App购买中,在恢复购买时不会调用case SKPaymentTransactionStateRestored:
方法,而是调用case SKPaymentTransactionStatePurchased:
,但是当购买时,希望向用户显示不同的信息恢复。
答案 0 :(得分:3)
[queue restoreCompletedTransactions]将触发SKPaymentTransactionStateRestored状态,其中队列为SKPaymentQueue。您不应期望在用户确认交易后调用此方法。相反,如果用户已经购买了产品,则会被设备警告。
答案 1 :(得分:0)
我有一个线索。当我创建SKProductRequest并开始加载它时,方法(paymentqueue:updatedTransactions :)和特别是SKPaymentTransactionStateRestored:状态被调用。
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithArray: productIdentifiers]];
request.delegate = self;
[request start];
我将看看苹果解决方案,看看,如果我能找到任何差异。
答案 2 :(得分:0)
您可以实施paymentQueueRestoreCompletedTransactionsFinished:以确定还原是否已完成:
答案 3 :(得分:0)
如果它还没有解决,你可以用逻辑技巧来做。当恢复被触发时,请使用布尔标志(或枚举状态,如果您愿意)记住它,并在触发SKPaymentTransactionStatePurchased时显示不同的消息。您可以实现两个委托方法
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
和
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
找出恢复完成的时间。在这种情况下保存,您可能不会让用户进行任何购买,而还原正在进行中。您可以向用户显示类似this的内容,以便用户看到当前正在发生的事情。
这就是我所做的,它对我有用。