無料でアプリ内購入を提供するゲームを開発しました。これはテスト中は問題なく動作しましたが、ゲームがリリースされてから (最初の初期リリース)、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 でこれを開発したので、これは驚くべきことです) が、少なくともその部分について説明を提供します。なぜそれが私のデバイスで動作しないのかはまだわかりません