堆栈溢出应用程序检测我越狱设置的默认浏览器(Chrome)的名称。我如何在objective-c和swift中实现同样的目标?如何获取默认的iOS浏览器名称?
(只是名称,而不是ActivityView代码)
例子:
更新:我进入设置>堆栈交流,发现这个:
它看起来应用程序默认为Safari,但iff Chrome安装后,链接将发送到该浏览器。 Chrome最有可能通过下面答案中描述的canOpenUrl
方法检测到。
堆栈溢出应用程序检测我越狱设置的默认浏览器(Chrome)的名称。我如何在objective-c和swift中实现同样的目标?如何获取默认的iOS浏览器名称?
(只是名称,而不是ActivityView代码)
例子:
更新:我进入设置>堆栈交流,发现这个:
它看起来应用程序默认为Safari,但iff Chrome安装后,链接将发送到该浏览器。 Chrome最有可能通过下面答案中描述的canOpenUrl
方法检测到。
我怀疑Stack Exchange应用程序没有专门检查您的默认浏览器。毕竟,由于Apple不提供简单的方法来更改默认浏览器,我怀疑SDK提供了一个API来检测默认浏览器。
取而代之的是,堆栈交换应用可以使用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
它是否检测到Chrome是您的默认浏览器或只是您安装了Chrome?即使没有显示,您是否也安装了Safari? – ndmeiri
@ndmeiri是的,我已经安装了,还有第三个。通过越狱,我可以将我的默认浏览器更改为Chrome,以便在iOS版Chrome中打开所有应用的链接。不知何故堆栈应用程序找到了我目前的“默认”浏览器。 – Drakes