その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

In-App Purchase で、プロダクトID が invalid になる場合の対処方法

たとえば下記のようなコードでプロダクト情報取得処理を行った場合に、

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 になる!という場合は


「アプリを削除して再インストール」


これを試してみてください。
(上記リストで太字にした項目にあたります)


参考ページ