おじゃまぷよ系エンジニアメモ

アプリエンジニアからサーバーとインフラエンジニアに転身しました

アップルの審査との100日戦争

CroudiaというマイナーSNSiOSアプリを作りました。処女作です。
処女作という響きにはロマンが詰まってますね?
初回リリースまでにおよそ8回リジェクトされ、初申請からリリースまで3ヶ月近くかかりました。

ちなみにアプリはこちら

Icros

Icros

  • Masahide Takahata
  • Social Networking
  • Free

その戦いの記録を振り返ってまとめてみます。
ただ、問題解決センターで実際にやりとりした内容が見えなくなってしまったので思い出しながら書くので 多少情報が不明瞭な部分もありますが悪しからず……

主なリジェクト理由

  • アプリの質が低い 【10.6】->プッシュ通知くるよ!って言って質高いアピール
  • emailなどの個人情報を取るな【17.2】->後述
  • 利用規約を書け -> 最初画面にそれっぽい文章追加
  • ログインにWebViewを使うな【10.6?】 -> 後述
  • アプリ名とアイコンが一致してない -> 何回かリジェクトされてる時に言われた!先に言えよ!!
  • 不快な投稿をブロック・ミュートできるようにしろ【14.3】 -> 実装した

ログイン処理との戦い

ほとんどがそのままapple様に言われた通りに修正したのですが
最大の敵はemailなどの個人情報を取得するなというのをどう回避するか?というものでした。
このWebサービスの認証はOAuth2.0でcallbackを指定してログインするタイプのもので、最初はWebViewを使ってshouldStartLoadWithRequestでcallbackのURLをキャッチしてログイン処理をかましていました。
しかしapple様にWebViewはUIとして良くないからSafariViewControllerを使えと言われたのでURLスキームでのログインに変える。
そしたらそれもUIとして良くないからダメと言われ…どうせいと?
しかもログイン画面から新規登録画面への導線があるため、どうしてもメールアドレスを取得する画面へ遷移してしまい個人情報取るなとも言われる
appleにもこのサービスはSDKとかないからどうしてもWebに遷移する必要がある。
ユーザーの動きによってはどうしても個人情報取得画面に行ってしまうがこちらではどうしようもないと説明しても、ダメだの一点張り
このあたりの申請、リジェクトの攻防を4回ぐらい繰り返した気がする

俺が許可したURL以外飛ばさないWebView

最終的にたどり着いた対応方がコレでした。
apple様的にはとにかく個人情報を入力させたくないらしいので
WebViewにして自分が許可したURL以外遷移しようとするとダイアログを出して遷移させないという荒技で対処したら、無事審査通りました!
もちろんこのやり方では、サービス提供者が何かの拍子にURLを変えてきたらそれだけでログインできなくなるので気を付けましょう
最初にWebView使うなと言ってたのはなんだったのか…

Croudiaのユーザー様がアプリのイメージキャラクターを描いてくれました。 ありがとうございます。

f:id:masahide318:20160508234550j:plain