如何获取默认的iOS浏览器名称?

How to get the default iOS browser name?

Stack Overflow 应用程序检测到我越狱设置的默认浏览器的名称 (Chrome)。我怎样才能在 objective-c 和 swift 中实现同样的事情?

(只是名称,不是 ActivityView 代码)

示例:


更新: 我进入“设置”>“Stack Exchange”,发现了这个:

看起来应用程序默认为 Safari,但 iff​​ Chrome 安装后链接将发送到该浏览器。 Chrome 最有可能被下面答案中描述的 canOpenUrl 方法检测到。

我怀疑 Stack Exchange 应用没有专门检查您的 默认 浏览器。毕竟,由于 Apple 没有提供更改默认浏览器的简单方法,我怀疑 SDK 是否提供 API 来检测默认浏览器。

相反,Stack Exchange 应用程序可能会在 UIApplication 上使用 canOpenURL(_:) 方法来测试是否安装了一组预定的常用浏览器应用程序。对于安装的每个浏览器,操作 sheet 都会获得一个新按钮。该方法可能类似于以下代码片段。

let safariURL = NSURL(string: "http://whosebug.com")!
let chromeURL = NSURL(string: "googlechrome://whosebug.com")!
let operaURL  = NSURL(string: "opera-http://whosebug.com")!

let sharedApplication = UIApplication.sharedApplication() // convenience

if sharedApplication.canOpenURL(safariURL) {
    // add "Safari" button to action sheet
}

if sharedApplication.canOpenURL(chromeURL) {
    // add "Chrome" button to action sheet
}

if sharedApplication.canOpenURL(operaURL) {
    // add "Opera" button to action sheet
}

// display action sheet