楽しいリジェクト ~ アプリ内課金編~
iOS のアプリには課金タイプが4つあって、実装面で大別すると2つになる。
消費型か、そうでないか。
タイプ | リストア | レシート |
消費型 | 不要 | 必須 |
---|---|---|
それ以外 | 必須 | 不要? |
ざっくり上の表のような機能が必要になる。
・課金タイプ
消費型:ユーザーが何度も買えるもの (パズドラの魔法石)
・機能
リストア:アプリの再インストールやデバイス変更したときに、過去に買ったものを復元させる。
レシート:購入したときに Apple Store に問い合わせて、ちゃんと購入したか確認する。
消費型以外はリストア機能が必須になる。
これはいろんなサイトに良く書いてある。
消費型のレシートに関するところも、まぁ探せば見つかるけれど、個人開発とかで消費型のアプリはあまり無いせいなのか、レシートを強調した記述をあまり見ない気がする。
業務で消費型アイテムの課金をするアプリを開発したんだけれど、なぜか何度もリジェクトされる。
アップル「リストア機能をつけろよ!」
自分「消費型だからリストアいらないでしょ!」
アップル「じゃ、もう一回バイナリアップして」
自分「アップロードしたよ」
アップル「ちゃんと本番でうpよろ」
自分「本番の署名ですが何か?」
アップル「じゃ、もう一回バイナリアップして」
自分「アップロードしたよ」
アップル「リストア機能つけろよ!」
自分「無限ループって怖くね?」
多分レシートを問い合わせる機能をつけてなかったのが悪かったんだと思うけど、審査待ち中なので結果待ち。
で、ここで終わらないのがレシートの恐ろしさ。
レシートを問い合わせるURLは、本番用とテスト用の2つある。
審査通過後にストアに出るのだから、当然本番用でアップロードすると思いきや、審査中はテスト用で行うらしい。
なんと面倒くさい。
まず本番系に問い合わせる。
テスト中であるステータスが帰ってくる。
テスト系に問い合わせる。
正常値のステータスが帰ってくる。
ゲーム側の処理をする。
完了。
ゲーム側の処理ってのは、レシートの正当性チェックなり、ゲーム内アイテム(通貨)の付与なり。
アップルさんはドキュメントを読めってすぐ言うけど、ファイル数多すぎなんです。