【问题标题】:Knowing when user has pressed cancel buttons during In-App purchase了解用户在应用内购买期间何时按下了取消按钮
【发布时间】:2010-08-12 22:49:25
【问题描述】:

我正在为应用内购买编写代码,并使用带有活动指示器的“正在处理...”视图在购买开始后阻止“立即购买”按钮。但是,由于这些警报视图来自 AppStore.app,您如何判断用户何时点击“取消”按钮?

当这些取消按钮被按下时,是否有一个委托方法被调用?还是你的观点再次变成firstResponder?我在这里错过了什么?

如果您认为这不可能,请查看“I Am T-Pain”应用程序...他们会执行非常相似的操作,并在按下取消按钮后立即关闭他们的视图。

【问题讨论】:

    标签: iphone in-app-purchase uialertview


    【解决方案1】:

    假设一切设置正确,您应该有一个实现SKPaymentTransactionObserver的对象,它将接收交易成功/失败/取消的回调。

    在我的示例中,它是此调用中提到的 purchaseManager 对象

      [[SKPaymentQueue defaultQueue] addTransactionObserver:purchaseManager];
    

    当用户取消支付时,您​​应该会收到交易状态为已取消的回调:

    - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    
            switch (transaction.transactionState)
            {
                case SKPaymentTransactionStatePurchased:
                    [self completeTransaction:transaction];
                    break;
    
                case SKPaymentTransactionStateFailed:
                    // THIS IS THE STATE YOU SHOULD SEE
                    [self failedTransaction:transaction];
                    break;
    
                               ...
    }

    您可以使用此回调来关闭您的视图等...

    【讨论】:

    • 老实说,我不知道我是怎么错过的......我在failedTransaction: if 语句中检查取消,但从未意识到它从未进入该 if 语句。我想所需要的只是另一双眼睛注视情况。谢啦!我真的很感激
    • 这如何解决问题?这里仍然没有明显的“已取消”状态,那么我们如何知道交易是失败还是在发出之前被取消?
    • 一旦交易失败,检查 if (transaction.error.code == SKErrorPaymentCancelled) 。 . .
    • 不幸的是,当我取消在调试器中看到的错误是错误代码 2:“无法连接到 iTunes 商店”。
    猜你喜欢
    • 2020-08-22
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多