【Swift】UIApplication.openメソッドでChromeを起動させる方法!
この記事からわかること
- SwiftでURLをブラウザで起動する方法
- UIApplication.openの使い方
- SafariではなくChromeで立ち上げるには?
- LSApplicationQueriesSchemesとは?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Xcode:16.0
- iOS:18.0
- Swift:5.9
- macOS:Sonoma 14.6.1
参考文献:ブラウザを開く(Swift)
ブラウザをSafariではなくChromeで起動する方法
SwiftでアプリからURLを閲覧する方法としてUIApplication
クラスのopen
メソッドを使用する方法があります。このメソッドはWebViewなどとは異なりブラウザアプリへ飛ばしてWebページを表示させます。
guard let url = URL(string: "https://appdev-room.com/") else { return }
guard UIApplication.shared.canOpenURL(url) else { return }
UIApplication.shared.open(url)
デフォルトで起動されるブラウザはSafariとなっていますが、これをChromeに変更したい場合は以下の手順で実装します。
- LSApplicationQueriesSchemesキーの追加
- URLスキームをgooglechromeに変更する
LSApplicationQueriesSchemesキーの追加
アプリ内で使用したいURLスキームはLSApplicationQueriesSchemes
キーに明示的に定義する必要があります。「info.plist」の中にLSApplicationQueriesSchemes
キーを追加し、配列内にgooglechrome
とgooglechromes
を追加します。
- キー:LSApplicationQueriesSchemes
- 値>配列Item1:googlechrome
- 値>配列Item2:googlechromes
URLスキームをgooglechromeに変更する
あとはUIApplication
クラスのopen
メソッドの引数に渡すURLのhttp
の部分をgooglechrome
に変更して渡すだけです。(https
ならgooglechromes
)
guard let url = URL(string: "googlechromes://tech.amefure.com/") else { return }
guard UIApplication.shared.canOpenURL(url) else { return }
UIApplication.shared.open(url)
おまけ
URLを受け取りChromeで起動するように文字列を置換するコードを載せておきます。
let urlString = url.absoluteString
let pattern = "http"
let with = "googlechrome"
guard let firstMatchRange = urlString.range(of: pattern) else { return }
let replacedString = urlString.replacingOccurrences(of: pattern, with: with, options: [], range: firstMatchRange)
guard let chromeUrl = URL(string: replacedString) else { return }
guard UIApplication.shared.canOpenURL(chromeUrl) else { return }
UIApplication.shared.open(chromeUrl)
実際にChromeで起動させる機能を組み込んだアプリのコードを載せておりますので参考にしてください。
参考URL:Github:LinkMark
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。
私がSwift UI学習に使用した参考書