サブスクのiOSアプリでIn-App-Purchase (アプリ内課金)を付けろとリジェクトされた話
Flutter大学というコミュニティを運営していて、そこではFlutterで作られたweb、iOS、Androidアプリを運用しています。いくつか有料プランがあり、サブスクはstripeで実装しています。
その辺の技術的構成は以下の記事でも説明しているので、興味ある方はご覧ください。
今回のリジェクト
今回は以下の問題でリジェクトされました。
3.1.3(b)マルチプラットフォームサービス:複数のプラットフォームで動作するAppでは、マルチプラットフォームのゲームにおける消耗アイテムなどを含め、別のプラットフォーム上のAppやデベロッパのWebサイトでユーザーが入手したコンテンツ、サブスクリプション、機能へのアクセスを許可することが可能です。ただし、そうしたアイテムは、App内のApp内課金アイテムとしても購入可能でなければなりません。
https://developer.apple.com/jp/app-store/review/guidelines/#multiplatform-services
これまではなんとかなっていた
これまでも、この手のご指摘はありました。
具体的には
- ログイン画面から外部に新規登録させる導線を消してください
- 設定に支払い方法の変更画面があり、外部決済を誘導しているので削除してください
などなどのご指摘です。
良かったのは、具体的にどこが問題なのか指摘してくれていたことです。
私もかれこれiOS開発に8年くらい携わっているので、デジタルコンテンツを購入できるアプリの場合にIn-App-Purchaseを使わなければいけないガイドラインについては知っています。そして、AmazonのiOSアプリがアプリ上でKindle本を購入できないという事情についても知っています。
stripeでクレジットカード決済のみに対応しているFlutter大学においても、同様にして、アプリからは決済できず、webで入会したユーザーがログインして利用できるアプリとして2020年9月から2年間運用してきました。
「リーダー」Appとして認められる可能性はある?
先ほどガイドラインの3.1.3(b)でリジェクトされたと書きましたが、そのガイドラインを見ると、3.1.3(a)に以下のように書いてあります。
3.1.3(a)「リーダー」App:以前に購入したコンテンツまたはコンテンツのサブスクリプション(具体的には、雑誌、新聞、書籍、オーディオ、音楽、ビデオ)に、ユーザーがアクセスできるようにすることは許可されています。「リーダー」Appは、無料ユーザー層向けにアカウント作成の機能や、既存ユーザー向けにアカウント管理の機能を含めることができます。「リーダー」Appのデベロッパは、外部リンクのアカウントエンタイトルメントをリクエスト申請し、デベロッパが所有する、またはデベロッパがアカウントの作成や管理の責任を保持するWebサイトへの情報リンクをApp内で提供することができます。詳しくは、「外部リンクアカウントエンタイトルメント」をご確認ください。
https://developer.apple.com/jp/app-store/review/guidelines/#reader-apps
なるほど。この理由で、NetflixやKindleアプリ等がAppleのIn-App-Purchaseを利用せずに、リリースできているのだなということが理解できました。
ということで、Flutter大学のアプリも外部リンクアカウントエンタイトルメントの手順通りにやれば、このままの仕様でも認められるのでは?と思い、読んでみました。
冒頭にはこう書いてあります。
このエンタイトルメントの使用に関心がある場合は、まずリクエストフォームを送信してください。
で、このリクエストフォームに沿って入力してみた所、
Your app is not eligible for this entitlement.
と赤文字で表示されてしまいました。あなたのアプリはこのエンタイトルメントには相応しくないよってことです。
具体的には、下図の部分が対象じゃなくなった理由だと思います。
そう、Flutter大学は、対面で質問zoomというサービスを提供しますし、勉強会も人間to人間ですし、デジタルコンテンツの消費だけをするタイプのサービスじゃないんですよね。。。
ということで、このガイドラインの 「リーダー」App に認められる事はできそうにありません。。
ちなみに念のため、上記のdigital onlyをYesにして 「リーダー」App の申請をしてみたところ、以下のメールのように却下されてしまいましたw
結局In-App-Purchase実装することを覚悟
何回かレビュワーとの会話を頑張りましたが、今回はもうどうしようもないと判断しました。
諦めて、アプリではRevenueCatを使ったIn-App-Purchaseを実装し、webではstripe決済を導入することにしました。
その方法については以下の記事にまとめておりますので、興味ある方はご覧ください!
以上の実装を行い、Appleの審査は無事通りました🎉
Discussion