Swift で URL を既定のブラウザで開く方法
ここでは、Swift で URL を既定のブラウザで開く方法をご説明します。
今回は、OPEN URL というボタンをタップした時に、以下のように指定した URL (https://www.swift.org/) を既定のブラウザで開くアプリを作ります。
URL を開くiOS アプリの準備をする
まずはテスト用にボタンをタップして、URL を既定のブラウザで開くための、簡単な iOS アプリを作ります。
新規アプリの作り方、ボタンの追加の方法、アクションの作り方などがわからない方は「基本的な iOS アプリの作り方」をご覧ください。
Xcode で [iOS] の [App] の新規プロジェクトを作成します。
デザインや場所などは適当で良いので、Main ストーリーボードの View Controller に Button をひとつ追加します。
そのボタンから、openURLTapped という名前で TouchUpInside のアクションを作っておきます。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func openURLTapped(_ sender: Any) {
}
}
Swift で iOS アプリから URL を指定してブラウザを開く方法
それでは、Swift で iOS アプリから URL を既定のブラウザで開くコードを書いていきましょう。
iOS アプリから URL を開くには、次のような UIApplication の open() メソッドを使います。
func open(_ url: URL,
options: [UIApplication.OpenExternalURLOptionsKey : Any] = [:],
completionHandler completion: ((Bool) -> Void)? = nil)
一つ目の引数の url は必須で、options と completionHandler はオプショナルです。
ただ、url をブラウザで開くだけであれば、url だけ指定すれば大丈夫です。
先ほど、作った ViewController.swift の openURLTapped() を次のように変更します。
@IBAction func openURLTapped(_ sender: Any) {
guard let url = URL(string: "https://www.swift.org") else { return }
UIApplication.shared.open(url)
}
2 行目で URL の文字列から、URLオブジェクトを生成しています。guard let で生成に失敗したら return するようにしています。
3 行目で UIApplication.shared.open() メソッドに、生成した url を渡して、既定のブラウザを起動して、URL で指定したウエブページを開いています。
Swift で iOS アプリから URL を既定のブラウザで開くコードはこれだけです。
info.plist に、アクセス許可などを追加する必要はありません。
デバイスにブラウザのアプリがインストールされていないことはあまりないと思います。
ですが、念の為、URL をハンドルできるアプリがインストールされているか確認したい時は、UIApplication.shared.canOpenURL(url) メソッドで確認することができます。
iOS アプリをシミュレータにインストールしてテストする
作った iOS アプリをシミュレータにインストールしてテストします。
シミュレータを指定してこのアプリを実行します。
アプリが起動すると、以下のような画面が表示されます
OPEN URL ボタンをクリックすると、デフォルトのブラウザのサファリが起動し、https://www.swift.org のページが表示されます。
Google Chrome をデフォルトのブラウザに設定している場合は、Chrome が起動して、https://www.swift.org のページが表示されます。
以上、Swift で URL を既定のブラウザで開く方法をご説明しました。