测试内购时,购买监听多次进入交易完成(SKPaymentTransactionStatePurchased)的状态,,
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
std::string identifier();
IOSiAPPaymentEvent event;
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing: //购买中
{
NSLog(@"==购买中========");
event = IOSIAP_PAYMENT_PURCHASING;
}
return;
case SKPaymentTransactionStatePurchased: //购买监听 交易完成
{
;
event = IOSIAP_PAYMENT_PURCHAED;
}
break;
case SKPaymentTransactionStateFailed: //购买监听 交易失败
NSLog(@"==交易失败========");
;
event = IOSIAP_PAYMENT_FAILED;
break;
case SKPaymentTransactionStateRestored: //购买监听 恢复成功
NSLog(@"==恢复成功========");
;
// NOTE: consumble payment is NOT restorable
event = IOSIAP_PAYMENT_RESTORED;
break;
}
_iosiap->delegate->onPaymentEvent(identifier, event, transaction.payment.quantity);
}
- (void)completeTransaction:(SKPaymentTransaction *)transaction
{
// Remove the transaction from the payment queue.
finishTransaction: transaction];
}
因为交易完成之后还有后续处理,比如给玩家添加金币,所以就出现玩家类似刷单的问题。交易成功之后我也有销毁交易------- finishTransaction: transaction];
添加观察员也只调用了一次【
if (!hasAddObserver)
{
addTransactionObserver:self];
hasAddObserver=YES;
}
】
求各位大神给出出主意,,,,,