Help us understand the problem. What is going on with this article?

[iOS] 会員登録を外部ブラウザ(Safari)で開くと、リジェクトされる

More than 3 years have passed since last update.

はじめに

Webサイトをアプリ化するという案件はよくありますよね。
その際に、Webサイトの画面を再利用して、アプリで表示することも多いと思います。

アプリ実装の選択肢としては、下記の2パターンあると思います。

・内部ブラウザ(WebView)で表示するパターン
・外部ブラウザ(Safari)で開くパターン

どちらの実装方法が良いでしょうか。

弊社では、
各種一覧系画面はパフォーマンスが求められるので、『ネイティブ』で、
各種詳細画面は更新頻度が高いので、『WebView』で
という風にざっくり切り分けることが多いです。
(勿論その他の理由も加味します。)

場合によっては、画面の一部のみにWebViewを表示することもあります。
(ContainerViewを利用するなど)

本題

皆様は、会員登録画面、ログイン画面、パスワードを忘れた方画面などは、どうされていますか?

ログイン画面は、ログイン時にトークンIDを取得したり、Webサイトとの連携等があるため、
WebViewで作ることが多いのではないでしょうか。

それに関連して、会員登録画面やパスワードを忘れた方画面は、
ユーザにWebサイト側でやってもらえば良いのではという考えに辿り着いたりします。
(たどり着かない方は、スルーしてください。)

Apple様の審査結果

残念ながら、『リジェクト』されます。

最近は、新規リリースでも数時間で審査が通りますが、
リジェクトされると凹みますよね。

何かダメだったのか?

会員登録画面を外部ブラウザ(Safari)で開くこと
どうも、アプリから一度離れるのがダメなようです。(推測)

それでは、どうする?

『会員登録画面は、アプリ内ブラウザ(WebView)で開く』が正解です。

加えて、iOS9については、
SFSafariViewControllerを利用して表示する必要があるようです。

(心の声)
SFSafariViewControllerは、イベントのフックなど何もできないのに。。。。。

まとめ

会員登録は、アプリ内でやりましょう。

実装方法は、ネイティブ、アプリ内ブラウザ(WebView)のどちらでも構いません。
ただし、iOS9以上に限り、
アプリ内ブラウザ(WebView)で表示するときは、SFSafariViewControllerを使いましょう!

アプリをたくさん制作されている方には、
釈迦に説法かもしれませんが、どなたかのお役にたてばと思います。

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away