申請したいアプリ内課金の状態がWaiting For ReviewになってないのでDeveloper Rejectした


iOSでのアプリ内課金のアイテム登録でつまづいてしまって申請をやり直したのでそのときのメモ。

他の人も同じようにつまづくかもしれないし、公式ドキュメントに書いてあることと違うような気がするのでまとめてみたけど、同じようにして解決できなくても責任は負えません。また、2013年12月現在の内容なのでiTunes Connect側の仕様が変わるとこの内容は正しくなくなる可能性もあるので注意して下さい。

## 要点

* アプリがWating For Reviewのとき、リリースしたいアプリ内課金のアイテムもWaiting For Reviewになっていないといけない(Ready to Submitだとダメ)
* アプリ内課金のアイテムがWaiting For Reviewになるにはアプリをアップロードしてからでは遅い
* 必要があればDeveloper Rejectして状態を変更しないといけない

## アプリがWating For Reviewのとき、リリースしたいアプリ内課金のアイテムもWaiting For Reviewになっていないといけない

アプリ内課金のアイテムを登録し、アプリをアップロードした後もアイテムのステータスがReady to Submit状態のままで、アイテムの詳細画面では下記のようなメッセージが出ていた。

![IAP画面で警告.png](https://qiita-image-store.s3.amazonaws.com/0/16400/a45fcbc6-f85b-8734-8581-13071684ebec.png "IAP画面で警告.png")



>Your first In-App Purchase(s) must be submitted with a new app version. Select them from the In-App Purchases section of the Version Details page and then click Ready to Upload Binary.


「アプリのバージョン詳細でIn App Purchases sectionから選択しろ」とあるが、このIn App Purchasesのsectionがアプリ詳細から見つからないので選択できないのでどうしようもないなと思っていると"...and then click Ready to Upload Binary"とあるので、つまりReady to Upload Binary（Appをアップロードする前の）の前に処理をしないといけないのではないかと気づく。

気をつけたいのは、Ready to Upload Binaryの状態ではなく、Ready to Upload Binaryボタンを押す前の状態であり、そのときにしかアプリ内課金をレビュー待ちにする処理ができないということになる。

最初から分かってればそんなことしなくてもよかったんだろうけど、このときアプリの状態をWating for ReviewからPrepare for Uploadの状態にするにはDeveloper Rejectしなければいけなかった。Developer Rejectすると状態はDeveloper Rejectedになるが、Prepare for Uploadと同じだ。


## アプリの状態

Developer RejectしてからPrepare for Upload(Developer Rejected)にすると、アプリ詳細(View Details)にIn App Purchasesの項目が表示される。選択するとモーダルビューが表示されレビューしてもらうアプリが表示されるのでチェックボックスにチェックして保存。

この項目が表示されないままWaiting for UploadやWaiting for Reviewまで行くと手遅れだと思う。

![アプリ詳細でIAP有効化.jpg](https://qiita-image-store.s3.amazonaws.com/0/16400/e62f8a82-82e2-141e-58ed-f7f8dcb3a7e5.jpeg "アプリ詳細でIAP有効化.jpg")


アプリをReady to Uploadの状態にし、アプリをアップロードしなおすと完了。課金アイテムもWating for Reviewになっていた。

## ステータスの流れをまとめるとこんな感じになる

* アプリを新規登録するとPrepare for Upload状態になる
 * <ここでアプリ詳細からアプリ内課金のアイテムを有効化する>
* Ready to Uploadボタンを押すとWating for Upload状態になる
* アプリをアップロードするとUpload Received状態になる
* Upload Received状態になってしばらくするとWating for Review状態になる
* アイテム有効化していればアイテムの状態もWaiting for Reviewになっている

一度Waiting for Reviewにしてしまうと、Developer Rejectする必要があった

* アイテムの状態がReady to SubmitでアプリステータスがWaiting for Reviewになっている
* Developer Rejectボタンを押すとDeveloper Rejected状態になる
 * <ここでアプリ詳細からアプリ内課金のアイテムを有効化する>
* Ready to Uploadボタンを押すとWating for Upload状態になる
* アプリをアップロードするとUpload Received状態になる
* Upload Received状態になってしばらくするとWating for Review状態になる
* アイテム有効化していればアイテムの状態もWaiting for Reviewになっている


# その他

実は過去に上記の問題を解決しないまま、アプリ内課金のアイテム購入ができない状態でリリースしたこともあったんだけど、そのときは申請が通ってしまった。つまりアプリ内課金が動作してないのにレビュアーは申請を通してしまってリリースされ、リリース後に自分で購入してみて気がついた。

また、公式のドキュメントではアプリ内課金のアイテム詳細で “Submit for Review”ボタンを押すとWaiting for Review状態になるという説明があって、それが押せる状態にならないのが謎のまま。これはもしかして最初の一つ目だけは必要ないが後からこの手順が必要ということだろうか....。

![](https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Art/iap_submit_for_review2.png)

最初の申請はレビューまでに時間がかかるのでアプリ内課金を実装しておくと申請までにつまづいてしまうこともある。だから最初の申請はアプリ内課金を実装せずに出し一刻も早くユーザーの評価を受けて、バージョンアップで対応することも手かなと思う。

# 参考

Apple 公式ドキュメント
https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/13_ManagingIn-AppPurchases/ManagingIn-AppPurchases.html

アプリ内課金が Waiting for Review にならない
http://relaxylab.blogspot.jp/2012/10/waiting-for-review.html