たとえば下記のようなコードでプロダクト情報取得処理を行った場合に、
self.request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:productId]]; self.request.delegate = self; [self.request start];
プロダクト情報の取得が完了すると productsRequest:didReceiveResponse: メソッドが呼ばるわけですが、そこで下記のように「無効なプロダクトID」をチェックすると
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { if ([response.invalidProductIdentifiers count] > 0) { // 無効なプロダクトIDあり }
みごとにinvalidになっている場合があります。
そんな場合のチェックリスト
- Have you enabled In-App Purchases for your App ID?
- Have you checked Cleared for Sale for your product?
- Have you submitted (and optionally rejected) your application binary?
- Does your project’s .plist Bundle ID match your App ID?
- Have you generated and installed a new provisioning profile for the new App ID?
- Have you configured your project to code sign using this new provisioning profile?
- Are you building for iPhone OS 3.0 or above?
- Are you using the full product ID when when making an SKProductRequest?
- Have you waited several hours since adding your product to iTunes Connect?
- Are your bank details active on iTunes Connect? (via Mark)
- Have you tried deleting the app from your device and reinstalling?
- Is your device jailbroken? If so, you need to revert the jailbreak for IAP to work. (via oh my god, Roman, and xfze)
で、上記のほとんどはアプリを正しく作っていれば問題なくて、ちゃんとやってるはずなのに invalid になる!という場合は
「アプリを削除して再インストール」
これを試してみてください。
(上記リストで太字にした項目にあたります)
(参考ページ)