💰

AppStoreConnectでアプリ内課金を審査に出した際のトラブル

に公開

個人開発でアプリ内課金を含むiOSアプリをリリースした際、
アプリ内課金の審査でちょっとしたトラブルがありました。

トラブルの原因の調査と解決に関して、
役立った情報が英語のみかつまとまったものがなく難儀したため、
ここに日本語でまとめておきます。

前提として、アプリ内課金は

  • 消耗型
  • 非消耗型
  • 自動更新サブスクリプション
  • 非自動更新サブスクリプション

の4種類あると思いますが、長いためここからはIAP(In App Purchase)という呼称で統一します。
この記事で記載しているトラブルはIAPの種類問わず、全ての場合で遭遇しうると思います。

概要

今回の件で私がハマったトラブルは、以下の通りです。

トラブルのトリガー
アプリ本体とIAPの審査を同時に提出し、IAPのみリジェクトされること
(ちなみに私のリジェクトの理由はIAPのメタデータに不備があったためです。)

その結果何が起きるか
その後、AppStoreConnect -> アプリ内課金(サブスクリプション)のページ内にある"提出"ボタンを押し、再度IAPのみを審査に出しても、

  • "We have returned your IAP products to you as the required binary was not submitted. When you are ready to submit the binary, please resubmit the IAPs with the binary."という理由でリジェクトされる
  • AppStoreConnectのアプリ内課金(またはサブスクリプション)のページには、以下画像の注意書きが表示される
  • リジェクト理由に従ってアプリ本体のバイナリと一緒に提出しようとしても、アプリのバージョンページに当初あったIAPを紐つけるセクションが見当たらない

なので、

  1. IAPのみ審査に提出してもその度にリジェクトされてしまう
  2. かといってアプリ本体を新しいバージョンとしてリリースしようとしても、当初あったIAP紐付けセクションが無い(後述)ので、アプリとIAPが紐付けできない
  3. アプリ本体とIAPを紐付けしないまま審査に提出しても、アプリ本体だけ先に審査され審査通過、IAPは変わらず"審査待ち"の状態になってしまう
  4. 遅れてIAPが"審査中"になっても、再度IAPのみ"We have returned your IAP product/s to you as the required binary was not submitted. When you are ready to submit the binary, please resubmit the IAPs with the binary."という理由でリジェクトされる

というハメ技にかかり、アプリ内課金を含んだ完全な状態でのリリースができない...
という状態になりました。

IAP審査まわりで知っておいた方が良いこと

どのように解決したかについて記載する前に、そもそもIAPの審査まわりについて
知っておいた方が良いこと, ハマりポイントについて整理しておきます。

アプリ本体と有料コンテンツの審査は別であること

アプリ本体と、IAPの審査は別々に行われます。
アプリ本体が審査通ったからIAPも問答無用で通る、というわけではありません。
アプリ本体は審査が通りステータスが"デベロッパーのリリース待ち"、IAPの方は"審査待ち"のような状況にもなり得ます。

有料コンテンツの初回リリースは、アプリ本体と一緒に審査に提出する必要がある。

これは、先ほどの画像にあった注意書きの通りです。
注意書きには以下の通り記されています。(日本語訳済み)

一番最初のApp内課金は、Appの新しいバージョンと一緒に提出する必要があります。
サブスクリプション(アプリ内課金)を作成し、
アプリのバージョンページにある「アプリ内課金とサブスクリプション」セクションで選択してから、
バージョンをApp Reviewに提出してください。

ここに書かれている"一番最初のApp内課金"という言葉の意味が曖昧で最初はよく分からなかったのですが、次のように理解すると良いようです。

Q. "一番最初のApp内課金"とは?
A. アプリでIAPを提供する最初のアプリバージョン。

以下の2パターンあると思います。

  1. アプリの初回リリースと同時にIAPも提供するケース
    -> つまり、バージョン1.0.0の提出と同時に、IAPも審査に提出する
  2. 後からIAPを追加するケース
    -> 例えば1.0.0は課金機能なしでリリース。その後1.1.0で課金機能を追加した場合。
    この場合はバージョン1.1.0提出時にIAPも同時に審査に提出する

一度でもIAPの審査が通った場合、それ以降はアプリ本体とIAPを同時に審査提出する必要はなく、IAPのみ審査に提出することができます。

アプリバージョンページにあるIAP紐付けセクションは、特定の条件下でしか表示されない

そもそも「アプリバージョンページにあるIAP紐付けセクション」とはどこかという話ですが、
バージョンページ(アプリのスクショをアップロードしたり概要を書くページ)の中にあります。
そしてバージョンページ内、以下の画像の「GameCenter」と「App Reviewに関する情報」の間に「In App Purchase +」というセクションが(本来なら)存在します。(2025/03/28現在)

このセクションにある+ボタンを押すことによって、「アプリ内課金(またはサブスクリプション)」のページで登録したIAPをアプリ本体に紐付けることができます。
なのですが、このセクションは特定の条件でしか表示されません。
(実際、上の画像ではその条件に合致しないので表示されていません)

特定の条件とは、調べたところ以下の条件のようです。

  • IAPのステータスが「審査準備完了」(英語の場合Ready to Submit)であること

なので、もし以下のようなケースに該当してしまった場合、バージョンページから「In App Purchase +」のセクションが消えます。

  • IAPの審査がリジェクトされて、「デベロッパのアクション待ち(赤いマーク)」になる
  • リジェクト理由を解決した後、アプリ内課金(またはサブスクリプション)ページに出てくる「審査へ提出」ボタンを押し、IAPのみ審査に再提出してしまう
    • この場合、再提出後はIAPのステータスが「審査待ち」になると思います。

一見するとIAPのリジェクト理由を解決して「審査へ提出」ボタンを押すのは順当で適切な手順のように見えますが、これでIAPのみ審査に提出してしまうと、

  1. IAPのステータスが「審査待ち」になる(アプリ本体は審査が通っているのでステータスが「配信準備完了)
  2. アプリのバージョンページからIAPを登録しようとしても「In App Purchase +」セクションはIAPのステータスが「審査準備完了」の時しか出ないので紐つけできない

という状態になるので、詰みます。
(自分で書いてても思いますがややこしい...)

本来想定されている手順は以下のようです。

  1. アプリ内課金(サブスクリプション)ページにある「審査へ提出」ボタンはアプリ内課金の初回リリース時は押さない
  2. IAPのステータスは「審査準備完了」のまま、アプリバージョンページの「In App Purchase +」セクションからIAPを紐付け、アプリ本体のみを審査に提出する

どのように解決したか

解決方法は2つあります。

方法1: 登録済みのIAPを削除して、もう一度新しいものとして再作成する

一度IAPが審査でリジェクトされると、「審査準備完了」のステータスにはどうやっても持っていけない(リジェクト理由を解決して「審査へ提出」ボタンを押すと「審査待ち」ステータスになってしまう)ので、「審査準備完了」状態のIAPを再現するには、最初からやり直すしかありません。

この方法は面倒なだけでなく、再作成したIAPの製品ID(ProductID)は再作成前のものとは別のものにしなくてはならないので、あまりおすすめしません。
(製品IDは一度でもIAPに登録するとそのIAPのみでしか使用できず、削除してもその製品IDは再利用できないためです)

なので、もう一つの方法がおすすめです。

方法2: アプリ本体の新バージョンを作り、審査に再提出する

結局「一番最初のApp内課金は、Appの新しいバージョンと一緒に提出する必要がある」ので、
アプリ本体とIAPはセットで審査に提出する必要があります。

なのですが、ここまで書いてきた通り紐付けセクションがないのでそれは無理です。
ではどうするかというと、まず本体の方は(すでに審査が通っていても)新しいバージョンを作ります。
そして審査に提出する際、「App Reviewに関する情報」のメモ欄にIAPも同時に審査してほしい旨を記載します。

具体的には、私の場合は以下のように記載しました。

When I previously submitted my IAP for review, it was rejected with the reason:
"We have returned your IAP products to you as the required binary was not submitted. When you are ready to submit the binary, please resubmit the IAPs with the binary."

However, I couldn't find a section within the app version information page to link the IAPs.
Therefore, I have submitted a new version of the app for review and set the IAP status to "Waiting for Review."

If there are no issues with the app review, I would appreciate it if the IAP review could be conducted at the same time.

Thank you for your support.
-------------------------------------------------------------------------------------------
以前IAPを審査に提出した際、"We have returned your IAP products to you as the required binary was not submitted. When you are ready to submit the binary, please resubmit the IAPs with the binary."という理由でIAPがリジェクトされました。

なのですが、アプリバージョン情報を記入するページ内にIAPを紐つけるセクションが見当たらないので、今回このように新しいバージョンとしてアプリ本体を審査に再提出し、IAPのステータスも"審査待ち"状態にしています。

もしアプリ本体の審査に問題がなかった場合、その時同時にIAPの審査も行っていただけると助かります。
以上、よろしくお願いいたします。

「アプリ本体とIAPを紐付けた上で同時に審査に提出しなければならない」というルールは、
技術的な理由ではなく、審査プロセスによるもののようです。

なので、上記のように記載した上で審査してもらうようにすると(もちろんReviewによると思いますが)意図を汲み取ってアプリ本体の審査完了後、IAPの審査もすぐに行ってくれる傾向があるようです。

私の場合も、この方法でアプリ本体を「配信準備完了」、IAPを「承認済み」まで持っていくことができました...
長かった...

おわり

ここに記載した現象はどうやら2016年から存在しているらしく、同じ問題で頭を掻きむしった人達は割と古くからいるようです...

解決の際に参考になったリンクは以下の2つです(というかこれのおかげで助かりました)
https://developer.apple.com/forums/thread/35757?answerId=255475022#255475022
https://cdf1982.com/blog.html

同様の問題に遭遇した人の一助になれば幸いです。

GitHubで編集を提案

Discussion