2

無料でアプリ内購入を提供するゲームを開発しました。これはテスト中は問題なく動作しましたが、ゲームがリリースされてから (最初の初期リリース)、IAP を購入しようとするとクラッシュします。このコードのベースとして、 Ray Wenderlich IAP チュートリアルを使用しました。

シミュレーターで実行するdidFailWithErrorと、製品リストを取得しようとしたときに - ハンドラーがヒットし、エラーのエラー コードは2. シミュレーターで IAP をテストするところまでたどり着けません。

携帯電話で実際の本番アプリ (ストアから) を実行すると、クラッシュ ログに次のように表示されます。

0   CoreFoundation      0x2e9cfe8b 0x2e8fb000 + 872075
1   libobjc.A.dylib     0x38ccd6c7 objc_exception_throw + 38
2   CoreFoundation      0x2e9cfdcd 0x2e8fb000 + 871885
3   StoreKit            0x310e69d9 0x310e4000 + 10713
4   60 Seconds          0x000b77df -[IAPHelper buyProduct:] (IAPHelper.m:53)
5   60 Seconds          0x000b7091 -[UpgradeViewController Buy5000Squares] (UpgradeViewController.m:199)
6   UIKit               0x3118a55f 0x3114a000 + 263519

だから私はそれが製品リストを正しく受け取っていることを知っており、ITC に対してダブルチェックすると名前が正しいことを知っています (実際、私は常にストアが私に送ったものを内部製品コードに入力しているため、正しいことを知っています)

本当の問題は、何が起こっているのかということです。クラッシュするのはなぜですか?シミュレーターでこれをテストすることさえできないのはなぜですか?

役立つコードの一部

-(void)Buy5000Squares
{
    if (![SKPaymentQueue canMakePayments])
    {
        // show alert box
        return;
    }
    [[SecondsIAPHelper sharedInstance] buyProduct:squares5000Product];
}

- (void)buyProduct:(SKProduct *)product {

    NSLog(@"Buying %@...", product.productIdentifier);

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

編集

この質問/回答によると、 XCode 5 はシミュレーターでのアプリ内購入のテストを妨げていることが判明しました (XCode 5 の GM でこれを開発したので、これは驚くべきことです) が、少なくともその部分について説明を提供します。なぜそれが私のデバイスで動作しないのかはまだわかりません

4

1 に答える 1

3

問題は、IAP 契約/銀行/税情報に iTunes Connect で適切に署名していなかったことが原因であることが判明しました。以前は有料アプリしか作成していなかったため、この情報を設定していませんでした。

これらに正しく署名すると、12〜24時間後に機能し始めました

于 2013-10-10T13:51:58.330 に答える