Flutter を使ってモバイルアプリ開発を約 3 年ほどやっているが、何回かアプリ提出の審査でリジェクトされた経験がある。これからの審査で似たような指摘を受けないように、フィードバック忘れないように議事録を残す。これからも審査提出を行うときにリジェクトされたら、議事録を足していく。せっかくの機会なので、ドキュメントにある文章を引用するなどしっかり読んでいく。
フィードバックを受けてからだいぶ時間がかかっているので最新のガイドラインと項目に相違の可能性がある。あとは審査提出できる権限がなかったのと、PM が対応し審査を通過させたケースもあるので、一部想像を交えたメモとなっている。個人アプリ開発で審査提出をかけるとなったときに、改めて内容を訂正する。
具体的なネクストアクションを示唆してくれるものもあれば、そうではなくアプリの特性に機能が沿っていないなど各プラットフォームに説明の必要なものがあり、対応については千差万別だ。審査員も一人一人取り締まり度に差異があるため、絶対という回答はない。なので、自分がどう対応したかは参考程度にとどめてもらえると幸いだ。
(まだアコーディオンや GitHub マークダウンの summary や details を実装していないので、この記事の情報量が多いのは改善したい。)
ガイドラインへのリンクも一緒に貼っておく。
App Review Guidelines - Apple Developer
https://developer.apple.com
審査提出時、レビュアに動作を確認してもらえるようにデモアカウントの用意が必要だが、そのアカウントでログインできなかったとのこと。ガイドラインが更新されたのか、Guideline 2.1 - Information Needed
の項目がないので、次からダンプする。
Guideline 2.1 - Information Needed
We’re looking forward to reviewing your app, but we were unable to sign in with the following demo account credentials you provided in App Store Connect:
User name: ${username}
Password: ${password}
Next Steps
Please provide the username and password for a valid demo account on the App Review page of App Store Connect that provides full access to your app's features and functionality or include a demonstration mode that shows all of the features and functionality available in your app. Note that we cannot use a demo video showing your app in use to continue the review.
To provide credentials for a valid demo account:
- Sign in to App Store Connect.
- Click My Apps.
- Select your app.
- Click on the app version on the left side of the screen.
- Scroll down to App Review Information.
- Select the "Sign-in required" checkbox.
- Enter demo credentials in the Username and Password fields.
- Click Save at the top of the Version Information page.
Resources
To learn more about providing information to App Store Review in App Store Connect, see App Store Connect Help.
iOS の審査で、Android (= Google) についての言及があるとリジェクトされる。それはそうというフィードバック。Flutter や React Native などのクロスプラットフォームの技術でアプリを作るときに注意を払わないといけないもの。同じサポート URL をアプリに埋め込み、iOS と Android の両方で配信すると、このような指摘を受ける。もちろんアップデート内容に Android と記載するのもアウト。
2.3.10 Make sure your app is focused on the experience of the Apple platforms it supports, and don’t include names, icons, or imagery of other mobile platforms or alternative app marketplaces in your app or metadata, unless there is specific, approved interactive functionality. Make sure your app metadata is focused on the app itself and its experience. Don’t include irrelevant information. (引用: App Review Guidelines - Apple Developer)
Guideline 2.3.10 - Performance - Accurate Metadata
We noticed that your submission includes irrelevant third-party platform information.
Specifically, your app includes Google Play references in the {app name} page.
Referencing third-party platforms in your app or its metadata is not permitted on the App Store unless there is specific interactive functionality.
Guideline 2.3.10 - Performance - Accurate Metadata
We noticed that your submission includes information about third-party platforms that may not be relevant for App Store users.
Specifically, your What”s New includes Android references.
Androidの ~~
Referencing third-party platforms in your app or its metadata is generally not relevant for App Store users, who are focused on the experiences offered by their current device.
Next Steps
To resolve this issue, please remove all instances of this information from your app and its metadata, including the app description, promotional text, What's New info, previews, and screenshots.
If you think we've misunderstood your app's functionality and how it interacts with third-party platforms, please reply to this message and provide additional information.
Resources
Learn more about relevant information to include in apps and metadata on the App Store in App Store Review Guideline 2.3.10.
個人情報を取得し、その条件に見合うユーザーに対して適切なプッシュ通知送ったりコンテンツを表示するため、アカウント作成時にユーザーの住まいの入力を求めていた。しかし、その要求がアプリとは直接的にあ関係ないとのことで、指摘が入った。PM が何回も説明したみたいだが、アカウント作成時に指摘を受けた項目をオプショナルにして、回避した。
(v) Account Sign-In: If your app doesn’t include significant account-based features, let people use it without a login. If your app supports account creation, you must also offer account deletion within the app. Apps may not require users to enter personal information to function, except when directly relevant to the core functionality of the app or required by law. (引用: App Review Guidelines - Apple Developer)
おそらく違反になったのはこの項目で、アプリを使用するのにアカウント作成が必須でなければ、ログインや個人情報入力を必須にさせない。アカウント削除の手段も提供しないといけない。
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
We noticed that your app requires users to register with personal information that is not directly relevant to your app’s core functionality.
Specifically, the following fields or actions are required but do not appear to be directly relevant to your app’s core functionality:
- {指摘された項目}
Next Steps
To resolve this issue, please either remove all required fields that are not relevant to the app or make those fields optional. Information requested during registration must be relevant to the features the app provides.
Please see attached screenshots for details.
これはもちろん利用していない API についての使用について、言及しているもの。
ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSHealthShareUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data
このリジェクトの対応が一番難しかった。どうやらアプリの特性上、会員情報を入力させることがよくないらしい。For Example ~ から続くオンラインショップとレストランの例がそう。アプリ内のコンテンツを閲覧し、何か一歩先のアクションをする際に、会員登録を促せばいい。ユーザーを特定しないと、API 側で処理が書けなかったり、デバイストークンを紐づけられないとのことで、匿名機能を実装しないといけなく本当に骨が折れた。
Firebase Authentication を使うことになったが、挙動が iOS と Android で違うのはいい学びだった。
FirebaseAuthの認証情報はiOSではアンインストールしても残ってしまう - くらげになりたい。
https://www.memory-lovers.blog
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
We noticed that your app requires users to register or log in to access features that are not account based.
Apps may not require users to enter personal information to function, except when directly relevant to the core functionality of the app or required by law. For example, an e-commerce app should let users browse store offerings and other features that are not account based before being asked to register, or a restaurant app should allow users to explore the menu before placing an order. Registration must then only be required for account-specific features, such as saving items for future reference or placing an order.
Next Steps
To resolve this issue, please revise your app to let users freely access your app’s features that are not account based.
Resources
See guideline 5.1.1(v) - Account Sign-In to learn more about our requirements for apps with account-based content and features.
意外なことに、抽選機能の有無について指摘を受けた。アプリ自体に抽選機能が実装されていなく、バナー画像タップで抽選がある外部サイト遷移していたが、これがガイドライン違反だったみたいだ。これは審査提出時には非表示にし、審査が通った後に表示して、回避した。
Guideline 5.3.2 - Legal - Gaming, Gambling, and Lotteries
Your app includes a contest or sweepstakes but it does not:
- Indicate that Apple is not involved in any way with the contest or sweepstakes.
Next Steps
It is necessary to:
- Include official rules of the contest or sweepstakes in the app and ensure the rules are available to users at all times.
- Include an explicit statement in the contest or sweepstakes rules specifying that Apple is not a sponsor.
Please see attached screenshots for details.
これは文言通り Xcode 16 でビルドしてねという警告。
ITMS-90725: SDK Version Issue - This app was built with the iOS 15.4 SDK. Starting April 2023, all iOS apps submitted to the App Store must be built with the iOS 16.1 SDK or later, included in Xcode 14.1 or later.
ガイドライン 1.5 - 安全性
1.5 デベロッパ情報 質問やサポートに関する問題について問い合わせるため、デベロッパへの連絡方法がユーザーに明示されている必要があります。アプリの中で、またサポートURLによって、デベロッパに簡単に連絡できるようにしておく必要があります。これは、授業で使用するアプリの場合、特に重要です。正確で最新の連絡先情報を記載していない場合は、ユーザーが不快な思いをするだけでなく、国や地域によっては法律違反となります。またウォレットパスは、発行者の有効な連絡先情報が記載され、パスのブランドまたは商標の所有者に割り当てられた専用の証明書を使用して署名されている必要があります。
問題の説明
App Store Connectに記載されているサポートURLが、App Storeユーザーが質問したり、サポートを求めるために利用できる情報が記載されているWebサイトにリンクされていません。
審査の詳細
現在、指定されたサポートURL、 {support url} はサポート情報を含んでいないWebサイトにユーザーを誘導しています。
リソース
サポートURLやその他のプラットフォームバージョンに関する情報はApp Store Connect Helpをご確認ください。
当たり前だが、バグがあるアプリは審査に通せないので、指摘されているところを修正して、審査を上げ直す。 以下によると進むボタンタップ以降でエラーメッセージが表示されるので、そちらを調査すべき。
Guideline 2.1 - Performance - App Completeness
We discovered one or more bugs in your app. Specifically, error message was displayed when we tapped on 「proceed」 button. Please review the details below and complete the next steps.
Review device details:
- Device type: iPhone and iPad
- OS version: iOS 16.3
Next Steps
Please run your app on a device to reproduce the issues, then revise and submit your app for review. If at first you're unable to reproduce the issue, try the following:
- For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce.
- For app updates, install the new version as an update to the previous version, then follow the steps to reproduce.
If we misunderstood the intended behavior of your app, please reply to this message in App Store Connect to provide information on how these features were intended to work.
Resources
- For information about testing apps and preparing them for review, see Testing a Release Build.
- To learn about troubleshooting networking issues, see About Networking.
Please see attached screenshots for details.
ご提供いただいたログイン認証情報でアプリ内コンテンツにアクセスできませんでした。
Issue found: Violation Issue found: Violation of Broken Functionality policy
Your app contains content that isn’t compliant with the Broken Functionality policy. App doesn’t install
Issue details
We found an issue in the following area(s):
Version code 1000002: In-app experience: Please see attached screenshot IN_APP_EXPERIENCE-8694.png
To bring your app into compliance, follow these steps:
Make sure to fix all broken experiences within your app. You can use the Pre-launch reports to check for app stability.
About the Broken Functionality policy
We don't allow apps that crash, force close, freeze, or otherwise function abnormally. Below are a few examples of common violations:
Apps that don't install
Apps that install, but don't load
Apps that load, but are not responsive
You can learn more about our policies by watching this video on tips to help you stay on the right side of Google Play policy.
Visit Google Play’s Academy for App Success to get contextual learning on this Google Play policy. Broken Functionality policy
問題が見つかりました。 データ セーフティ フォームに情報が入力されていません
お客様のアプリは、Google Play Console のデータ セーフティ フォームに情報が入力されていません。すべてのアプリは、Google Play Console のデータ セーフティ フォームに必要な情報を入力し、データを収集および共有する方法について正確に開示することが求められます。この要件は、ユーザーデータを収集しないアプリにも適用されます。
February 16, 2024までに問題が修正されないアプリについては、追加措置の対象となる可能性があります。
Google Play のユーザーデータに関するポリシーのデータ セーフティ セクション について
データ セーフティ セクションはユーザーに表示されていますが、「情報はありません」と表示されます。アプリはこのポリシーに準拠する必要があります。
準拠していないアプリは、更新が否承認となり、将来的に追加の違反措置の対象となる可能性があります。
詳しくは、以下のリソースをご参照ください。
Google Play のデータ セーフティ セクションにアプリのプライバシーとセキュリティに関する情報を提供する方法
Google Play PolicyBytes - データ セーフティ フォームのチュートリアル
Google Play SDK Index で、ご利用の SDK プロバイダがデータ セーフティ ガイダンスへのリンクを共有しているかどうかを調べることができます。アプリ内のサードパーティのコード(サードパーティのライブラリや SDK など)が、どのようにユーザーデータを収集、共有しているかを確認してください。
問題が見つかりました。 プライバシー ポリシーの URL が無効です
お客様のアプリのプライバシー ポリシーは、必要なポリシー要件を満たしていません。ユーザーデータに関するポリシーに基づき、アプリのストアの掲載情報ページとアプリ内でプライバシー ポリシーにリンクする必要があります。ユーザーの個人情報や機密情報にアクセスしないアプリであっても、プライバシー ポリシーを掲載する必要があります。
プライバシー ポリシーを追加または更新し、そのプライバシー ポリシーが、有効な URL でアクセス可能であること(PDF は不可)、編集不可となっていること、アプリに適用されていること、ユーザーのプライバシーについて明確に規定していることをご確認ください。
以下のプライバシー ポリシー用コンプライアンス チェックリストをご確認ください。プライバシー ポリシーは、以下を満たす必要があります。
Google Play Console でアプリのストアの掲載情報ページからリンクされ、アプリ内からもリンクされていること。
アプリの Google Play の掲載情報またはアプリ自体に記載されている主体(デベロッパーや会社など)への参照が指定されていること。
プライバシー ポリシーであることが明瞭にわかるラベル付けがされていること。
プラグインや特別なハンドラを使わずに、標準的なブラウザで確認できること(PDF は不可)。
どの国からもアクセスでき、アクセス制限のない一般公開の有効な URL で参照できること。
編集できないこと。
アプリがユーザーデータに対して行うアクセス、収集、使用、共有の方法が包括的に開示されていること。具体的には、以下の情報が必要です。
アプリがアクセス、収集、使用、共有するユーザーの個人情報や機密情報の種類、およびユーザーの個人情報や機密情報の共有先の開示。
ユーザーの個人情報や機密情報を安全に処理するための手順。
デベロッパーのデータ保持ポリシーおよびデータ削除ポリシー。
問題の詳細
次の項目で問題が見つかりました。
プライバシー ポリシー
Google Play のユーザーデータに関するポリシーのプライバシー ポリシー について
アプリでユーザーの個人情報や機密情報を収集していない場合でも、有効なプライバシー ポリシーへのリンクをご提供ください。2022 年 8 月 22 日以降はこのポリシーへの準拠が必須となり、準拠していないアプリの更新は否承認となります。
下記のリンクのポリシーを見直して、プライバシー ポリシーのすべての要件を満たしていることを確認してください。