見出し画像

書籍情報保管アプリ #15 『AppStoreの2回の却下に対応して最終承認されました!!』

前回はなんとかAppStoreに申請しました。

今回は最終承認に至るまでの2回の却下に対応した内容を紹介します。


1回目の却下

最短48時間で審査の回答が来ると記載があったのですが、きっとしばらく来ないかなー。と思っていたら意外と一晩寝たら審査の結果が来ました。

結果・・・却下!!ガーン。

以下に却下理由として連絡があった内容を記載します。(英語でした。)

対応した内容を引用表示で記載します。

Guideline 2.1 - Information Needed

We have started the review of your app, but we are not able to continue because we need a demo QR code or AR marker (image) to fully assess your app features.

Specifically, please provide a code to scan.

Next Steps

To help us proceed with the review of your app, please provide the demo details in the App Review Information section for your app in App Store Connect or reply to this message with the requested demo information. Please ensure that the information you provide includes any data necessary to demonstrate the functionality of your app features.

To provide QR codes or images information:

- Log in to App Store Connect
- Click on "My Apps"
- Select your app
- Click on the app version on the left side of the screen
- Scroll down to "App Review Information"
- Provide information in "Notes" as appropriate
- Click "Save"
- Once you've completed all changes, click the "Save" button at the top of the Version Information page.

これは単純に、カメラで読み取るべきISBNコードの画像を送って、ということですね。手元の本の裏表紙を写真に撮ってアップロードしました。

Guideline 5.1.1(v) - Data Collection and Storage

5.1.1(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. If your core app functionality is not related to a specific social network (e.g. Facebook, WeChat, Weibo, Twitter, etc.), you must provide access without a login or via another mechanism. Pulling basic profile information, sharing to the social network, or inviting friends to use the app are not considered core app functionality. The app must also include a mechanism to revoke social network credentials and disable data access between the app and social network from within the app. An app may not store credentials or tokens to social networks off of the device and may only use such credentials or tokens to directly connect to the social network from the app itself while the app is in use.

Issue Description

The app supports account creation but does not include an option to initiate account deletion. Apps that support account creation must also offer account deletion to give users more control of the data they've shared while using an app.

Follow these requirements when updating an app to support account deletion:

- Only offering to temporarily deactivate or disable an account is insufficient.
- If users need to visit a website to finish deleting their account, include a link directly to the website page where they can complete the process.
- Apps may include confirmation steps to prevent users from accidentally deleting their account. However, only apps in highly-regulated industries may require users to use customer service resources, such as making a phone call or sending an email, to complete account deletion.

Next Steps

Update the app to support account deletion. If the app already supports account deletion, reply to App Review in App Store Connect and identify where to locate this feature.

If the app is unable to offer account deletion or needs to provide additional customer service flows to facilitate and confirm account deletion, either because the app operates in a highly-regulated industry or for some other reason, reply to App Review in App Store Connect and provide additional information or documentation. For questions regarding legal obligations, check with legal counsel.

Resources

Review frequently asked questions and learn more about the account deletion requirements.

あとで作ろうと思っていたユーザー削除の機能をつけなさいということです。なるほど、しっかり見てくれていますね。
下記のサイトを参照して削除の機能を作成しました。少しコードが間違っているので適宜修正しています。


Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage

5.1.1(ii) Permission Apps that collect user or usage data must secure user consent for the collection, even if such data is considered to be anonymous at the time of or immediately following collection. Paid functionality must not be dependent on or require a user to grant access to this data. Apps must also provide the customer with an easily accessible and understandable way to withdraw consent. Ensure your purpose strings clearly and completely describe your use of the data. Apps that collect data for a legitimate interest without consent by relying on the terms of the European Union’s GeneralData Protection Regulation ("GDPR") or similar statute must comply with all terms of that law.

Issue Description

One or more purpose strings in the app do not sufficiently explain the use of protected resources. Purpose strings must clearly and completely describe the app's use of data and, in most cases, provide an example of how the data will be used.

Next Steps

Update the camera purpose string to explain how the app will use the requested information and provide an example of how the data will be used. See the attached screenshot.

Resources

Purpose strings must clearly describe how an app uses the ability, data, or resource. The following are hypothetical examples of unclear purpose strings that would not pass review:

- "App would like to access your Contacts"
- "App needs microphone access"

See examples of helpful, informative purpose strings.

カメラ使用の許可のところで、初期の文言のままで
Runner needs camera access
となっていたのですが(RunnerはXcodeのデフォルト?プロジェクト名)、これじゃあ、許可するにも、「なんでカメラ使うかわからんだろう」とのこと。
会社の上司のツッコミのようですね。
camera access 許可してくれたらISBNコード読めるよみたいなことをinfo.plistに英語で記載して提出。
*これが原因で2回目の爆速却下になりました。


Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage


The 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 the app to let users freely access the app's features that are not account based.

Resources

See guideline 5.1.1(v) - Account Sign-In to learn more about requirements for apps with account-based content and features.

Support

- Reply to this message in your preferred language if you need assistance. If you need additional support, use the Contact Us module.
- Consult with fellow developers and Apple engineers on the Apple Developer Forums.
- Help improve the review process or identify a need for clarity in our policies by suggesting guideline changes.

ユーザーにいきなりサインアップを求めずに、サインインしなくてもある程度アプリを使えるようにしてください。とのこと。
正直、迷いました。クラウドのDB使うので、ユーザー管理は必須だと思うし、書籍情報がないとアプリ使うも何もないのだけどなー。と。
ただ、こういう指摘に対して反論しても前に進まなそう、と判断して、思い切ってDemoユーザーを作成し、サインインしなくても本の一覧を見たり、個別の本の情報ページを見れるようにしました。
Demoユーザーは新しい本の登録や、既存の本情報の削除、コメントの追加、編集、ユーザー登録の削除の機能を無効化しました。

2回目の却下

基本的に全てのコメント(却下理由)に対応したので、承認されるかなー。と思いつつ、この記事を書き始めていたら、半日くらいでレビューの結果が来ていました。

結果は・・・却下!!!ガーンですね。

理由を最初見た時に、「Design」とあったので、結構根が深いのか?やはりAppleデザインの敷居は高いのか?と思いましたが、実は、よくよく読むと先に記載の通りカメラアクセスの許可の説明文が英語だから、アプリの言語(日本語)にしなさいとのことでした。

Guideline 4.0 - Design


We noticed an issue in your app that contributes to a lower-quality user experience than App Store users expect:

- Your app's permissions requests are not written in the same language as your app's Japanese localization. To help users understand why your app is requesting access to a specific feature, your app's permission requests should be in the same language as your app's current localization.

Since App Store users expect apps to be simple, refined, and easy to use, we want to call your attention to this design issue so you can make the appropriate changes.

Next Steps

Please revise your app to address all instances of the issue identified above.

Resources

- To learn more about App Store design requirements, see App Review Guideline 4 - Design.
- Review the UI Design Dos and Don’ts for tips on fundamental design best practices.
- Visit Accessibility on iOS to learn more about delivering a superior mobile experience to every customer.
- Learn more about designing for iOS in the Human Interface Guidelines.

Support

- Reply to this message in your preferred language if you need assistance. If you need additional support, use the Contact Us module.
- Consult with fellow developers and Apple engineers on the Apple Developer Forums.
- Help improve the review process or identify a need for clarity in our policies by suggesting guideline changes.

単純にinfo.plistを日本語で記載しても良いかと思ったのですが、Xcodeでローカライズできるようです。
下記のページを参考に日本語の説明文を追記しました。
ついでにその他の部分で英語のままになっているところを多少修正しました。

審査承認!!

2回の却下で無事承認されました。

やったー。

今後やりたいこと

アプリが承認されました。でもまだまだやりたいことありますね。。

  • Gitの管理をもう少し勉強。Tagとか

  • Firestore Authのメールローカライズ

  • パスワードを忘れた場合に対処する

  • 問合せフォームの設置

  • 読書履歴のグラフ化

  • 書籍のフィルター表示

  • Flutter Testの準備

  • ユーザー情報の更新

  • 書籍一覧のZoon In/Out

  • 多言語化する

  • Cコード(NDC?)のバーコード読み取り

  • Androidの実機ビルド

  • コメントをSNSアプリへ共有する



  • ライセンス関係表示(以下のページ参照。)

  • ユーザー登録時にプロファイル情報を取得する(以下のページ参照。もう少し登録内容の内部チェックなどを追加したい。)

  • 書評保存(以下のページ参照。DBへの登録も実施ずみ。)

  • Appleアプリに公開!(以下のページ参照。)

  • Material Themeの調整(以下のページ参照。)

  • ログイン画面(以下のページ参照)

  • 本一覧表示(以下のページ参照)

  • UI/UXの修正(大体終了。あとZoomも入れたいかな。)

  • 登録した本の削除(以下のページ参照)

  • コードの整理(Classの再定義など)(以下のページ参照)

  • 本の一覧の検索・並べ替え(以下のページ参照。まだ継続必要)

  • GoogleBookAPIも使えるようにする(以下のページ参照。)

  • 本の情報追加する(以下のページ参照。出版社は別途OpenBDで補完必要。)

  • アイコンの作成(以下のページ参照。)



この記事が気に入ったらサポートをしてみませんか?