2017年7月4日火曜日

「Guideline 4.2.2 - Design - Minimum Functionality」に対抗してみました

概要

アプリの審査基準の一つに Minimum Functionality という基準があり、これはアプリが単純すぎる場合にリジェクトされる基準になります
例えば Web ビューだけのアプリでサイトに訪問するのと同じエクスペリエンスしか提供されていない場合などは対象となります
今回この基準でリジェクトされたアプリがあり、リジェクトされるごとに機能を少しづつ改善したところリジェクトされないところまで来たので、その対処方法を紹介します

環境

  • macOS X 10.12.5
  • Xcode 8.3.3 (8E3004b)

アプリの概要

アプリは単純な RSS リーダのようなアプリです
ある特定のサイトに特化した RSS リーダでアプリで見栄えを良くし簡単に見れるようにしたアプリです
基本的にな機能はフィード情報を取得して UITableView で表示するだけなので確かに Web ビューと変わらないと言えば変わりません

あえて言うなら売りはシンプルさですが、今回 Minimum Functionality に引っかかりました

対応方法

具体的に「これ」を実装すればリジェクトされないという基準もわからないのでとりあえず思いつくものを機能追加してみました
一応選定基準としては

  • UI に大きく影響しない機能
  • コードレベルで簡単に追加できる機能

あたりを基準に選定していきました

とりあえず普通に出してみる

リジェクトされたあとにコメントでアピールしてどうなるか確認してみました
アピールコメントの内容は「Web に訪問するよりシンプルで良い、見やすい」という点をアピールしました

が結果は当然アウトでリプライはガイドラインの URL がびっしりと書かれた感じでした

プッシュ通知の実装

Firebase を使ってプッシュ通知機能を入れてみました
UI に影響がなくプッシュ通知だけであれば、ロックインもほぼされないので導入しました

で、結果はこれもダメ
今回アピールはせずコメントに「じゃあアプリのスピードを改善するのじゃダメ?」という質問にしてみました
要するにどうやればリジェクトされないか具体的な方法を教えてくれるか期待したですが
結局リプライは前回と同様ガイドラインの URL が送られてくるだけでした

画像のキャッシュ機能を実装

ならばと実装してみようということで画像を取得する際にメモリにキャッシュする機能を実装してみました
具体的には Kingfisher というライブラリを追加することでキャッシュできるようにしました
(Kingfisher の紹介記事はこちら)

で、結果はこれもダメ
たぶんここまでの結果を見て自分の予想だと内部的なブラッシュアップや機能改善ではダメで UI 的に変化をもたらして UX を向上しないとダメなんだろうなと思いました (もちろんアプリによっては機能改善でも OK かもしれませんが)

ここではアピールやコメントは一切せず次の一手を考えてました

CoreData を使ってお気に入り機能を追加する

読み込んだフィードの情報をお気に入りできる機能を追加しました
お気に入りの情報は CoreData を使ってローカル端末にのみ保存します
クラウド等で保存はしないのでアプリが消えればお気に入りの情報もクリアされてしまいます
お気に入りは UITableViewCell をスワイプすることでできるようにしました
スターボタンを設置しても良かったのですが、既存 UI への影響を考えて極力変更が小さい方法を選択しました

で、結果的にこれがヒット、アプリの審査が通りました
ここまでの結果で見れば CoreData を使った機能を追加すれば回避できるような気がします
が、やはりアプリによってだとは思うので正直 CoreData の機能が決め打ちになるとは思えないかなと思います
が、試してみる価値はあるかなと思います

別の観点から

実は画像のキャッシュ機能を追加した時に、ちょうどよかったので別のアプリにも Kingfisher を追加しました
で、実はその別のアプリも Minimum Functionality で引っかかったのですが、そのアプリはアピールしたところすんなり審査を通過しました
アピールした点は画像のキャッシュを追加したという点ではなく「Web ビューじゃないよ、サイトじゃ同じ内容確認できないよ」という内容なので何とも言えませんが
アピールを頑張ってすれば、アプリによっては審査が通過するアプリもあるのかもしれません

アプリの審査基準は正直わからない

何度もアプリを審査に出してはいますが、明確な審査基準はさっぱりわかりません
ガイドラインはあるものの結局人がレビューしているので人によって審査基準に差がある気もしています

というのも今回審査が通ったときに別のアプリも審査中だったのですが、別のアプリもすべて同日に審査が通りました
ここから予想するに自分のレビュー待ちのアプリすべてをレビューしてくれるある 1 人の人が指定され、その人が結構ゆるい方でバンバン審査が通過したんじゃないかなとも予想しています

というかアプリの審査はアプリごとのキューじゃなくてユーザごとのキューになっているような気もしました
1 番最初にレビュー待ちになったアプリは一週間前で最後にレビュー待ちになったアプリは 2 日前だったので、それで同日に審査が通ったのを見るとそういうこともあるのかなと思った次第です

最後に

Minimum Functionality の対策を紹介しました
自分の場合、決め手は CoreData の機能でしたが、必ずしも CoreData を使った機能を追加することで通過するようになるとはならないと思います
それでも、そういうケースがあるということを紹介できて良かったかなと思います

もしかしたら全く同じ機能で Swift4 対応したアプリを審査に出したらまた Minimum Functionality でリジェクトされるかもしれませんが、、、w

0 件のコメント:

コメントを投稿