web-dev-qa-db-ja.com

iOSシミュレータでIAP(アプリ内購入)をテストする方法ORデバイスで?

Ray Wenderlichチュートリアルブックに従って、シンプルな非消耗型のアプリ内購入メカニズムを実装しました。

アプリが起動したら、製品情報リクエストを開始します。

self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
_productsRequest.delegate = self;
[_productsRequest start];

SKProductRequestが作成されます。メモリアドレスがありますが、他には何も起こりません。どのデリゲートメソッドも呼び出されません。

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
    NSLog(@"Product info received...");
    NSArray *products = response.products;
    for (SKProduct *product in products) {
        NSLog(@"ID: %@, title:%@, (%f)", product.productIdentifier, product.localizedTitle, product.price.floatValue);
    }

    self.productsRequest = nil;
}

- (void)request:(SKRequest *)request didFailWithError:(NSError *)error {
    NSLog(@"Failed to load list of products");
    self.productsRequest = nil;
}

私は2回チェックしました:

  • ITunes Connectでアプリを完全にセットアップ。
  • ITCのアプリのステータスは「アップロードの準備」です
  • 1つの非消費IAPが追加されました。
  • ITCのIAP製品のステータスは「提出準備完了」です
  • アプリIDは、アプリとplistの両方でcom.mycompany.myappです。 2回チェック。
  • IAPはcom.mycompany.myapp.productnameを使用します(リクエストにまったく同じIDを使用します)。
  • ITCでテストユーザーアカウントを作成しました。
  • Appleへの提出はまだありません。
  • 私のMacはインターネットにアクセスできます。
  • コンソールまたは画面に他のメッセージはありません。

Ray Wenderlichの本には、私はこれ以外に何もしなければならないことは書かれていません。

onceのみ-didFailWithError:デバイスのデリゲートの呼び出しを見ましたが、再び表示されることはありませんでした。代理人がデバイスでもシミュレータでも呼び出されません。まったく応答せずに数分間実行しました。

iTunes Connectはこの紛らわしい警告を出します:

最初のアプリ内購入は、新しいアプリバージョンで送信する必要があります。 [バージョンの詳細]ページの[アプリ内購入]セクションからそれらを選択し、[バイナリをアップロードする準備ができました]をクリックします。

アプリ内購入をテストする前に、これは必要ですか?

25
openfrog

Xcode 5.0(5A1413)の現在のバージョンでは、アプリ内購入はiOSシミュレーターでは機能しません。

StoreKit(アプリ内購入)はシミュレーターでは機能しません。 13962338

ソース:Xcode 5.0リリースノート>既知の問題> iOSシミュレータ https://developer.Apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/xc5_release_notes/xc5_release_notes.html#//Apple_ref/doc/ uid/TP40001051-CH2-SW3

24
yood

IOSシミュレーターのドキュメントでは、次のように記述されています。

APIの制限

IOSシミュレーター内では、APIと機能に次のようないくつかの制限があります。

Apple Push Services
Privacy alerts for access to Photos, Contacts, Calendar, and Reminders
The UIBackgroundModes key
iCloud document syncing and key-value storage support

サポートされていないフレームワークは次のとおりです。

External Accessory
Media Player
Message UI 
Event Kit
In UIKit, the UIVideoEditorController class
Store Kit

アプリ内購入ではStore Kitが機能する必要があり、Store KitフレームワークはSimulatorではサポートされていないため、iOSシミュレーターでIAPをテストすることはできません。

詳細: iOSシミュレーターのドキュメント

16
Ashbay

残念ながら、シミュレータでテストできないことがいくつかあります。アプリ内購入はそのリストに属しています。

そのため、シミュレーターでアプリ内購入をテストすることはできません。そのためにはiOSデバイスが必要です。

編集:私が見る限り、シミュレータでIAPをテストしようとすると、購入代行者が呼び出されません。

5
Bartu

私は何かを考え出した:

AppDelegateの-didFinishLaunching ...の最後にSKProductRequest immediatelyを開始しましたが、うまくいきませんでした。

それから私は遅れて電話をして、3秒待った。それからそれは働き始めました。そのため、アプリの起動直後にStoreKitリクエストを行うことはできません。

1
openfrog

SkProductRequestオブジェクトはどこで宣言されていますか? skProductRequestのグローバル宣言を試してください。

0
user3189333