![]() |
|||||
対象: ブラウザを開く(Swift)アプリからSafariを起動するのは簡単にできる。UIApplicationのopenメソッドにURLを渡すだけで良い。開きたいページがhttpかhttpsかに拘らずこの方法で開くことができる。 let url = URL(string: "http://www.office-matsunaga.biz/ios/list.php") //UIApplication.shared.openURL(url!) // iOS 10以降利用可能 UIApplication.shared.open(url!) では、SafariでなくChrome for iOSでページを開きたい場合はどうすれば良いだろうか。URLスキームを使えばChromeで目的のページを開くことができる。やり方は開きたいページのURLの"http"の部分を"googlechrome"に変えてopenメソッドを呼ぶだけである。あるいは、"https"で始まるURLならば、それを"googlechromes"に書き換える。 let url = URL(string: "googlechrome://www.office-matsunaga.biz/ios/list.php") if UIApplication.shared.canOpenURL(url!) { UIApplication.shared.open(url!) } canOpenURLメソッドは、指定されたURLスキームである"googlechrome"をサポートしたアプリが端末にインストールされているか否かを判断するために使用している。ただし、これだけだとcanOpenURLメソッドを呼んだところで以下のようなエラーが出てしまうだろう。 SwiftInvokeSafari[337:182445] -canOpenURL: failed for URL: "googlechrome://www.office-matsunaga.biz/ios/list.php" - error: "This app is not allowed to query for scheme googlechrome" 使用したいURLスキームは、予めInfo.plistのLSApplicationQueriesSchemesキーに配列として登録しておかなければならない。httpのサイトならば"googlechrome"、httpsのサイトならば"googlechromes"をInfo.plistに登録しておく必要がある。
アプリから起動したSafariやChromeの左上には、アプリ名と矢印が表示され、起動元のアプリに戻ることも可能となっている。 ![]() 尚、canOpenURLメソッドでtrueが返ってきたからと言って、そのURLがアクセス可能であることを意味するものではない。また、openメソッドの前に必ずcanOpenURLメソッドを呼ばなければならないと言うわけでもない。つまり、canOpenURLメソッドによるChromeがインストール済みか否かの確認を行わないならば、Info.plistへのURLスキームの登録も必要ない。 実は、openメソッドによるChromeの起動の仕組みは、他のアプリにも応用できる。例えば、Google Maps for iOSを起動することもできる。 (2018/01/19)
Copyright© 2004-2019 モバイル開発系(K) All rights reserved.
[Home]
|