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

Posted

技术标签:

【中文标题】如何获取默认的 iOS 浏览器名称?【英文标题】:How to get the default iOS browser name? 【发布时间】:2015-07-12 08:27:57 【问题描述】:

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

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

例子:


更新:我进入“设置”>“堆栈交换”,发现:

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

【问题讨论】:

它是否检测到 Chrome 是您的默认浏览器,还是仅检测到您安装了 Chrome?即您是否也安装了 Safari,即使它没有显示? @ndmeiri 是的,我都安装了,还有第三个。通过越狱,我可以将我的默认浏览器更改为 Chrome,以便所有应用程序的链接在 Chrome for ios 中打开。 Stack App 不知何故找到了我当前的“默认”浏览器。 【参考方案1】:

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

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

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

【讨论】:

这是一个合理的方法,也是很好的想法,但不知何故,即使我安装了 Safari(可以删除它吗?),Chrome 还是出现了。也许他们使用这种方法并首先交叉检查Chrome? @Drakes 也许吧。一种测试方法是继续安装 Chrome,但再次将 Safari 设为默认浏览器。如果按钮仍然显示 Chrome,那么您是对的。 我切换回 Safari,但它仍然显示 Chrome。我切换到另一个浏览器,它仍然显示 Chrome。我删除了 Chrome,它显示的是 Safari。 我发现了一些新信息。请参阅我的答案的编辑。您的解决方案可能就是 SE 所做的。感谢您的回复。 @Drakes 好的,所以我们是对的。它必须检查是否安装了某些浏览器,然后将按钮标题设置为列表中第一个找到的浏览器。不客气。我很高兴能帮上忙。

以上是关于如何获取默认的 iOS 浏览器名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS中获取WLAN ISP名称?

如何获取所有 SQL Server 默认值和规则的名称

如何在 iOS 中获取 WLAN ISP 名称?

如何在 IOS 中获取所有名册名称

如何获取 INFOPLIST_FILE 名称 iOS

如何获取访客设备信息