30

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

私は二度チェックしました:

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

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

デバイスでデリゲートへの -didFailWithError: 呼び出しを見たのは1 回だけでしたが、二度と表示されませんでした。私のデリゲートは、デバイスとシミュレーターの両方で呼び出されません。まったく応答がなく、数分間実行しました。

iTunes Connect は、次の紛らわしい警告を表示します。

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

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

4

7 に答える 7

8

残念ながら、シミュレーターでテストできないことがいくつかあります。In App Purchases はそのリストに属します。

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

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

于 2013-04-16T15:11:37.930 に答える