【Swift UI】SFSafariViewControllerの使い方!Webページの表示

この記事からわかること
- SwiftのSFSafariViewControllerの使い方
- アプリ内からWebページを表示させるには?
- Swift UIでの実装方法
\ アプリをリリースしました /
環境
- Xcode:14.3.1
- iOS:16.4
- Swift:5.8.1
SFSafariViewControllerとは?
公式リファレンス:SFSafariViewController
SwiftのSFSafariViewController
クラスはWebページを表示するためのインタフェースを提供するクラスです。ブラウザアプリを起動させることなくアプリ内からSafariブラウザエンジンを使用してWebページを開くことができるようになっています。そのためネイティブのSafariブラウザアプリと同等の機能をiOSアプリで実装することができます。

アプリ内のビューとして表示することができ、Webページ内で遷移してもSafariアプリが起動することなく、遷移することが可能です。また「戻る」と「進む」ボタンがデフォルトで表示されるのでユーザーにとっても操作しやすくなっています。一番右下にはSafariアプリでページを直接開くボタンも用意されます。
同じようにiOSアプリからWebページを表示させる機能を持ったクラスにWKWebView
クラスがあります。
使い方
SFSafariViewController
クラスを使用して実際にWebページを表示させてみたいと思います。使用するにはSafariServices
をimport
する必要があります。
使用方法は簡単でSFSafariViewController
の引数に表示させたいURLを渡してインスタンス化しpresent
メソッドで遷移を実行するだけです。UIViewController
を継承しているのでpresent
メソッドの引数にそのまま渡すことができます。
UIKitでの実装方法
サンプルとしてUIKitでボタンをタップ時に表示させるコードを実装してみました。
Swift UIで使用する
Swift UIではまだWebページを実装するための構造体がないのでSFSafariViewController
やWKWebView
を使用して実装する必要があります。Swift UIでUIKitのビューを使用するためにUIViewControllerRepresentable
プロトコルを使用して以下のように実装しました。
おすすめ記事:【SwiftUI】UIViewRepresentableの使い方!Coordinatorクラスとは?
WKWebView
クラスならこちらの記事を参考にしてください。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。