首页 文章

grab “应用内购买已被购买”活动

提问于
浏览
3
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{
for (SKPaymentTransaction* transaction in transactions)
{
    CCLOG("transactionState = %ld", transaction.transactionState);
    switch (transaction.transactionState)
    {
        case SKPaymentTransactionStatePurchased:
            [self completeTransaction:transaction];
            break;
        case SKPaymentTransactionStateFailed:
            [self failedTransaction:transaction];
            break;
        case SKPaymentTransactionStateRestored:
            [self completeTransaction:transaction];
            break;
        default:
            break;
    }
}

上面的代码用于跟踪我们知道的购买状态 . 但似乎代码不会跟踪“应用程序内购买已被购买”的事件 .

[[SKPaymentQueue defaultQueue] addPayment:payment];

每次我使用上面的代码购买已购买的IAP时,IOS确认购买对话框将显示transactionState = SKPaymentTransactionStatePurchasing(输出为“transactionState = 0”) . 然后我购买该项目并且“已购买的应用内购买”对话框显示没有其他州代码输出 .

我想赶上上面的事件 . 我打赌它一定是可以捕获的 . 该活动是否被扔到其他地方?

2 回答

  • 1

    在我的情况下,问题是由于 SKPaymentTransactionObserver 在另一个库已经注册了自己的观察者后添加到 SKPaymentQueue 引起的 . 切换初始化的顺序,以便我的应用程序注册自己的观察者首先解决了问题 .

    I've provided in more detail here

  • 0

    当我们的服务器收据验证停止工作且交易没有修改购买流程时,我们遇到了类似的问题 . 在应用程序添加新产品付款之前,应用程序会立即迭代所有未结交易( [SKPaymentQueue defaultQueue].transactions ),并在未结交易具有与新产品付款相同的产品标识符时停止付款 .

相关问题