読みもの一覧に戻る

Apple審査事例

ライター: まき

2016年11月14日

Iphone 676726 1920 r

こんにちは。

以前、このゆとり世代エンジニア交流会サイトで「エンジニア友達を作ろう」という記事を書かせていただいた、まき(@akatsuki174)です。

今回は「iOSエンジニアあるある的なことがあれば」という依頼があったので、実際に前職で経験したApple審査リジェクト事例について書こうと思います。


ちなみに私は以前リジェクト事例共有会で登壇しており、今回はその一部をちょっと掘り下げた記事になります。

その時の勉強会参加ブログは「こちら」になります。

いろんな事例が紹介されていたのでこちらも参考にしてみてください。


また、審査ガイドラインはちょこちょこ更新されています。

なので今回紹介した条文、事例が必ずしも正しいわけではないので注意してください。

審査ガイドライン条文は「こちら」から抜粋しており、2016年10月現在の情報を元に書いています。

今回は和訳はざっくりとしか書いてないので、ちゃんとした意味は原文を読んで把握してください。


ではリジェクト事例を紹介したいと思います。


リジェクト事例

他のモバイルプラットフォームに言及していたのでリジェクト

2.3.10 Make sure your app is focused on the iOS, Mac, Apple TV or Apple Watch experience, and don’t include names, icons, or imagery of other mobile platforms in your app or metadata, unless there is specific, approved interactive functionality.

 「そんなミスやるわけないじゃん」と思うかもしれませんが意外とハマったりします。

私がリジェクトをくらった時は、ネイティブの部分は問題なかったのですが、ヘルプを表示していたWebViewに「Androidをお使いの方は?」という文字列が入っていたという状態でした。

WebViewのコンテンツに関しては作成しているのはアプリエンジニアではなく、制作の方達だったということもあり、気付かずに提出してしまいました。

対策としては制作の方達が作ってくださったコンテンツには、審査提出の前には一度目を通し、問題があればその時点で差し戻して修正してもらうようにしました。


【不必要に個人情報の入力を求めていたのでリジェクト】

5.1.1 Data Collection and Storage
(ii) If your app doesn’t include significant account-based features, let people use it without a log-in. 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.

当時私が扱っていたアプリはECアプリです。

このアプリでは会員登録の際に(確か)氏名、生年月日、性別、メールアドレス、住所の入力を求めており、どれも必須項目でした。

この状態でも、ある時までは審査が通っていたのですが、ある時突然「必要ない情報取ってるよね?」とリジェクトされてしまいました。

確かダメ出しをされた項目は生年月日、性別あたりだった気がします。


確かにアプリとしてはこれらの情報がなくても成り立つのですが、マーケティングという観点でいうと全くもって成り立ちません。

どれくらいの年齢の人が何を買ったのかがわからないと次に何を入荷すべきなのかの戦略立案に支障がでてきます。

これではまずいのでとりあえずApple側に抗議のメールを送ってみました。

その時は「より良い製品開発のために生年月日等の情報は必要だから審査通してくれ」という趣旨でiTunes Connectから返信しました。

もうちょっと本音を言うと、性別等はDB上でNOT NULLとかになっているはずだし、このアカウントは自社の他のサービスでも使える共通アカウントになっていたので、

簡単にNULLを許すわけにはいかないという事情がありました。

ですが、返ってきた答えとしては「それでもダメなものはダメ」でした。


これに対して社内で会議が行われたものの、どうやら結論は出なかったようで、結局バージョンアップを諦めるという対応になりました。

たぶん未だにバージョンアップされていないです。。。


【データの保存方法がガイドラインに沿っていないからリジェクト】

Before You Submit
Make sure you:
・ Check whether your app follows guidance in other documentation, such as:
iOS Data Storage Guidelines

※抜粋文一部省略


「iOS Data Storage Guidelines」にいろいろと書かれているのですが、iOSにはこのようなデータはどこに保存すべき、というガイドラインがあります。

このガイドラインに従っていないとリジェクトされます。

ガイドラインではざっくり言うと以下の4つが規定されています。

  1. ユーザ生成、もしくはアプリ側で再生成できないデータのみ<Application_Home>/Documents以下に入れるべき。
  2. 再ダウンロード、再生成可能なデータは<Application_Home>/Library/Caches以下に保存するべき。
  3. 一時的なデータは<Application_Home>/tmp以下に置くべき。
  4. デバイスに残しておく必要がなければ「バックアップを取らない」設定を使用するべき。


リジェクトされた当初どんな状況だったのかというと、とりあえずいろんなデータをDocuments以下に保存し、かつバックアップ対象にしているという状態でした。

なので対応としては場所はDocumentsのままですが、バックアップ対象にはならないようにしました。


心得ておくといいこと

* Apple公式ページに「一般的なアプリケーションの却下理由」というページがあり最も一般的なリジェクト原因が紹介されているので、ここは最低限チェックする。

* リジェクトされたらどの条文で指摘されて、どんなコメントをもらったのか、それに対してどのような対応をしたのかについてはちゃんとメモを残しておきましょう。

* 「今まで通ってたけどいきなりリジェクトになった」という事態はあり得るので、リリース予定日ギリギリに審査提出することのないようにしましょう。

* ガイドラインはちょいちょい更新されるので、こまめに情報収集しましょう。


最後に

いかがでしたでしょうか?

今回3つしか紹介できませんでしたが、ガイドラインの項目はもっとたくさんあります。

全て把握した上で開発する必要はないと思いますが、気が向いたとき、項目が更新されたとき、リジェクトされたときなどに条文を見返してみるといいかもしれません。


それでは皆さん、ガイドラインを守りつつiOSアプリ開発を楽しみましょう!