在App Purchase沙箱中没有提示我登录/通过 [英] In App Purchase sandbox not prompting for my login/pass

查看:90
本文介绍了在App Purchase沙箱中没有提示我登录/通过的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在开发一个(应用程序)在应用程序购买(IAP)中使用的应用程序。
我已经完成了指南中的所有内容以启用iap,一切正常,直到我想购买。

部分代码:

We're developing an app which (ofcourse) uses in app purchases (IAP). I've done everything in the guide to enable iap and everything works fine, untill I want to make purchase.
Some of the code:

MainViewController.m

    -(void)viewDidLoad {
            if ([SKPaymentQueue canMakePayments]) {
                    MyStoreObserver *observer = [[MyStoreObserver alloc] init];     
                    [[SKPaymentQueue defaultQueue] addTransactionObserver:observer];        

                    SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObjects: @"com.company.app.product1", @"com.company.app.product1", nil]];
                    request.delegate = self;
                    [request start];
            }
    };

    -(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
            for (SKProduct *prod in response.products) {
                    NSLog(@"%@ (%@)", prod.localizedTitle, prod.price);
            }
            [request release];
    };

    -(IBAction)clickBuy:(UIButton *)__sender {
            SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"com.company.app.product1"];
            [[SKPaymentQueue defaultQueue] addPayment:payment];
    };

MyStoreObserver.m

    - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
        for (SKPaymentTransaction *transaction in transactions) {
            switch (transaction.transactionState) {
                case SKPaymentTransactionStatePurchased:
                    NSLog(@"SKPaymentTransactionStatePurchased");
                    break;
                case SKPaymentTransactionStateFailed:               
                    NSLog(@"SKPaymentTransactionStateFailed");
                    break;
                case SKPaymentTransactionStateRestored:
                    NSLog(@"SKPaymentTransactionStateRestored");
                    break;
                case SKPaymentTransactionStatePurchasing:
                    NSLog(@"SKPaymentTransactionStatePurchasing");
                default:
                    break;
            }
        }
    };

productRequest:委托方法显示2个产品以他们的名字/价格。就像我进入iTunes连接网站一样。

The productRequest: delegate method shows 2 products with their name / price. Like I entered in the iTunes connect site.

但是一旦我点击购买按钮,就不会弹出对话框或询问我的凭据。仅记录SKPaymentTransactionStatePurchasing。


我:

- ...已在设置/商店窗格中注销

- .. 。我正在使用正确的配置文件

- ...绝望

But once I click the 'buy' button, no dialog pops up or asks me for my credentials. Only "SKPaymentTransactionStatePurchasing" is logged.

And I:
- ... have logged out in the settings/store pane
- ... am using the right provisioning profiles
- ... am desperate

任何人?

推荐答案

我遇到了类似的问题,但我的做法更像是一个愚蠢的举动。我已经重构了对 finishTransaction 的调用,以便为 transactionState 中的每个州调用它:

I encountered a similar problem, but mine was more of a boneheaded move on my part. I had 'refactored' the call to finishTransaction so that it was being called for every state in transactionState:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for (SKPaymentTransaction *transaction in transactions) {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchased:
                // do stuff
                break;
            case SKPaymentTransactionStateFailed:
                // do stuff
                break;
            case SKPaymentTransactionStateRestored:
                // do stuff
                break;
            default:
                break;
        }
        [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    }
}

结果™,这也会调用 finishTransaction on SKPaymentTransactionStatePurchasing ,这将导致崩溃。移动 finishTransaction 回到每个修复的switch语句的情况。

Turns out™, this will also call finishTransaction on SKPaymentTransactionStatePurchasing, which will cause a crash. Moving finishTransaction back into each case of the switch statement fixed that.

这篇关于在App Purchase沙箱中没有提示我登录/通过的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆