0

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];
}
4

1 に答える 1

0

これは、トランザクションを復元しようとしたか、支払いキューから削除していないために発生したと思います。

于 2012-08-15T10:29:40.707 に答える