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

标签 ios objective-c swift browser ios7

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

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

例子:

chrome


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

settings

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

最佳答案

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

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

let safariURL = NSURL(string: "http://stackoverflow.com")!
let chromeURL = NSURL(string: "googlechrome://stackoverflow.com")!
let operaURL  = NSURL(string: "opera-http://stackoverflow.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

关于ios - 如何获取默认的 iOS 浏览器名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31365889/

相关文章:

ios - DISPATCH_QUEUE_CONCURRENT 和 DISPATCH_QUEUE_SERIAL 有什么区别

swift - 将 Cocoapods 与 App Extension 一起使用

swift - 3字节unicode字符能否自动转成ascii

iphone - UITableViewCell 变换重复反转

ios - 如何在 Sprite Kit/Swift 中将文本环绕成一个圆圈

objective-c - 为应用程序创建 URI

objective-c - JXA:从CoreServices访问CFString常量

ios - swift 4 : Timer Crashing - unrecognized selector sent to instance

ios - 在 Objective-C 中显示以编程方式放置在 Storyboard 放置的对象后面的对象

objective-c - 如何防止 SQLite3 两次自动递增到相同的值?