我想用Google Chrome打开网址。如果我将网址前缀替换为“ googlechrome://”(ergo google chrome打开网址),则此方法就很好。
但是,我也确实想检查是否已使用“ canOpenUrl”方法为其安装了chrome,我再次了解到我需要确保已添加相应的网址方案。到目前为止,我已经在我的plist的url方案中添加了“ googlechrome”和“ googlechromes”,并且“ canOpenUrl”方法返回为true。但是什么也没发生,谷歌浏览器无法打开。有什么明显的我想念的吗?
此代码可以正常工作,只要打开我的Chrome浏览器,我的plist中就没有任何url方案,那么它就会打开:
if let googleUrl = URL(string: "googlechrome" + "\(urlString.replaceStringPrefix())") {
print("openUrl, googleUrl: ", googleUrl)
UIApplication.shared.open(googleUrl, options: [:])
}
以下对于带有相应plist条目的canOpenUrl返回true,但是什么也没有发生,Google chrome无法打开:
<key>CFBundleURLSchemes</key>
<array>
<string>googlechrome</string>
<string>googlechromes</string>
<string>googlechrome-x-callback</string>
</array>
if let googleUrl = URL(string: "googlechrome" + "\(urlString.replaceStringPrefix())") {
print("openUrl, googleUrl: ", googleUrl)
if UIApplication.shared.canOpenURL(googleUrl) {
print("Can open url with Chrome, url: ", googleUrl)
UIApplication.shared.open(googleUrl, options: [:])
} else {
print("Cannot open url with Chrome, falling back to Safari")
if let safariUrl = URL(string: urlString) {
UIApplication.shared.open(safariUrl, options: [:])
}
}
}
答案 0 :(得分:0)
找到了罪魁祸首。 canOpenUrl将在上面的plist条目中返回true,在各个应用中实际打开的正确密钥是LSApplicationQueriesSchemes,其结果是:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>googlechrome</string>
<string>googlechromes</string>
<string>googlechrome-x-callback</string>
</array>