iPhoneのネイティブとWebViewとブラウザの違いについて

iOSアプリを開発している時

ネイティブ、WebView、ブラウザについて説明する機会があったため、その時のまとめを共有いたします。

結論

種類表示方法開発
コスト
アプリ
アプデ要否
UI設計オフラインでの
使用可否
ネイティブアプリ独自の
画面を表示
高い必要Web側:対応不要
アプリ側:自由度の高いUI可能
(アプリ内UIを使うため)
可能
webViewアプリ上で
Web画面を
埋め込み表示
安い不要Web側:レスポンシブ対応が必要
アプリ側:閉じるや戻るボタンは自前で作成する必要がある
不可
(サーバー通信必須のため)
外部
ブラウザ
端末の
標準ブラウザで
表示
安い不要Web側:レスポンシブ対応が必要
アプリ側:対応不要
不可
(サーバー通信必須のため)
アプリ内
ブラウザ
アプリ上で
Safariブラウザを表示
安い不要Web側:レスポンシブ対応が必要
アプリ側:ブラウザに必要なボタン等があるため、ほぼ不要
不可
(サーバー通信必須のため)

上記の違いがあります。

それでは違いについて詳しくお伝えします。

違いについて

ネイティブ・WebView・ブラウザの種類
  • ネイティブ
  • WebView
  • 外部ブラウザ
  • アプリ内

ネイティブ

ネイティブとはXcode画面で作成した画面のことです。

表示物を修正する場合、Xcode上で編集する必要があります。

webView

webViewとは、Xcode上ではHTMLのiflameのようなものを埋め込み、Webコンテンツを表示させます。

表示物を変更する場合、XcodeではなくWeb側で修正する必要があります。

外部ブラウザ

外部ブラウザとは、iPhoneのデフォルトブラウザを立ち上げて特定のページを開いたものです。

別アプリのため、UI変更などはできません。

表示物の変更はWeb側で修正する必要があります。

swift
UIApplication.shared.open("[ 表示したいURL ]")

実装は一番楽です。上記の一文で実装可能です。

アプリ内ブラウザ

アプリ内ブラウザとは、WebViewと外部ブラウザの間のようなものでアプリ内でsafariブラウザを開きます。

画面上下に標準的なボタンなどは実装されています。

swift
import SafariServices
let vc = SFSafariViewController(url: "[ 表示したいURL ]")
present(vc, animated: true, completion: nil)

上記の様にSafariServicesをインポートし、SFSafariViewControllerで表示したいURLを引数で渡せば、使用できます。

ボタン部分の変更はできず、表示物の変更はWeb側で修正する必要があります。

まとめ

種類表示方法開発
コスト
アプリ
アプデ要否
UI設計オフラインでの
使用可否
ネイティブアプリ独自の
画面を表示
高い必要Web側:対応不要
アプリ側:自由度の高いUI可能
(アプリ内UIを使うため)
可能
webViewアプリ上で
Web画面を
埋め込み表示
安い不要Web側:レスポンシブ対応が必要
アプリ側:閉じるや戻るボタンは自前で作成する必要がある
不可
(サーバー通信必須のため)
外部
ブラウザ
端末の
標準ブラウザで
表示
安い不要Web側:レスポンシブ対応が必要
アプリ側:対応不要
不可
(サーバー通信必須のため)
アプリ内
ブラウザ
アプリ上で
Safariブラウザを表示
安い不要Web側:レスポンシブ対応が必要
アプリ側:ブラウザに必要なボタン等があるため、ほぼ不要
不可
(サーバー通信必須のため)

最近では、webViewを使ったアプリが増えてきています。

Web側で作成したものをアプリで表示できるため、開発コストも抑えることができます。

おわりに

最後までご覧いただきありがとうございます。

webViewには特定のドメインの時は、外部ブラウザを開く様にしたりとか脆弱対策が必要になってきます。

また何かありましたら共有させていただきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA