如何获取默认的 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 浏览器名称?的主要内容,如果未能解决你的问题,请参考以下文章