iOS应用程序在下次应用程序运行时询问密码

时间:2012-08-15 00:45:37

标签: ios in-app-purchase

我已经在我的iOS游戏中实现了应用程序内容。应用程序内部工作,但每次我测试它(使用测试帐户),下次我运行我的应用程序时,它会在我加载应用程序商店产品后立即询问我的登录名/密码(这应用程序会立即发生发射)。如果我取消,它将在下次应用程序运行时再次询问用户凭据,依此类推,直到用户输入登录名/密码。

这是沙箱的问题还是我的实施问题?我该如何解决这个问题?

以下是用于加载产品/购买的代码的相关部分:

class InAppIos::Private {
public:

    // ...

    void loadProducts(const std::vector<std::string> & identifiers) {
        NSMutableSet *nsids = [NSMutableSet setWithCapacity:identifiers.size()];

        for (unsigned int i = 0; i < identifiers.size(); ++i) {
            [nsids addObject:[NSString stringWithUTF8String:identifiers[i].c_str()]];
        }

        SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsids];
        request.delegate = productRequestDelegate;

        [request start];
    }

    void onProductsResponse(SKProductsResponse *response) {
        unsigned int count = response.products.count;

        InAppProductList products;

        for (unsigned int i = 0; i < count; ++i) {
            Pointer<InAppProduct> product(new InAppProductIos((SKProduct *)[response.products objectAtIndex:i]));
            products.push_back(product);

            productMap[product->getIdentifier()] = product;
        }

        listener->onProductsResponse(products);
    }

    // ...
};

void InAppProductIos::buy(unsigned int quantity) {
    if (!InApp::get()->isInAppEnabled()) {
        MessageBox::showMessageBox("Error", "Cannot process payment.", "OK");
        return;
    }

    SKMutablePayment *payment = [SKMutablePayment paymentWithProduct: product];
    payment.quantity = quantity;

    [[SKPaymentQueue defaultQueue] addPayment:payment];
}

1 个答案:

答案 0 :(得分:0)

我认为这是因为您尝试恢复交易,或者您尚未将其从付款队列中删除。