在应用程序中购买特定设备中的未完成交易

时间:2013-12-18 07:15:47

标签: ios objective-c xcode in-app-purchase

我在应用程序中购买非耗材,问题是当我启动应用程序时,会出现一个警报视图,其中已经填写了邮件地址并询问密码。此特定问题仅发生在我测试的其他地方的同一设备中当我在其他设备上测试时从未发生过。 在某个地方我必须放置这个[[SKPaymentQueue defaultQueue] finishTransaction:transaction];才能完成未完成的交易,但我完全感到困惑,因为我已经放置了必要的地方。这是我现有的代码

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for (SKPaymentTransaction *transaction in transactions) {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchased:

                [self UnlockPurchase];
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                NSLog(@"Restored ");
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
               break;
            case SKPaymentTransactionStateFailed:NSLog(@"Transaction Failed");

                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
            default:
                break;          
       }
    } 

- (IBAction)Restore:(id)sender {

    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

}

-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
    [self UnlockPurchase];
}

- (IBAction)BuyProduct:(id)sender {

    SKPayment *payment = [SKPayment paymentWithProduct:_product];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}

我之前在另一台设备上遇到的类似问题只是因为我在[[SKPaymentQueue defaultQueue] finishTransaction:transaction]中遗漏了SKPaymentTransactionStateRestored然后我的问题就解决了。当我使用此测试用户恢复购买时,它会恢复而不会进入{ {1}} case。当我再次尝试购买时,它说您已经购买了商品但尚未下载。现在我需要摆脱包含已填写的电子邮件地址的登录信息我开始时弹出?帮助!

1 个答案:

答案 0 :(得分:0)

您缺少处理应用商店对应用程序的响应的方法。它们应该在您的app委托中:

关注Apple文档以提供产品:

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/DeliverProduct.html#//apple_ref/doc/uid/TP40008267-CH5-SW3

或者你可以使用ray wenderlichs教程:

http://www.raywenderlich.com/21081/

请注意,这些方法应该控制内容交付,以便购买成功与否。