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 は、次の紛らわしい警告を表示します。
最初のアプリ内購入は、新しいアプリ バージョンで送信する必要があります。[バージョンの詳細] ページの [アプリ内購入] セクションからそれらを選択し、[バイナリをアップロードする準備ができました] をクリックします。
これは、アプリ内購入をテストする前に必要ですか?