Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift LSCopyDefaultHandlerForURLScheme检查当前应用程序是否为默认浏览器的替代方案?_Swift_Macos - Fatal编程技术网

Swift LSCopyDefaultHandlerForURLScheme检查当前应用程序是否为默认浏览器的替代方案?

Swift LSCopyDefaultHandlerForURLScheme检查当前应用程序是否为默认浏览器的替代方案?,swift,macos,Swift,Macos,由于10.15不推荐使用LSCopyDefaultHandlerForURLScheme,检查我的应用程序是否设置为默认浏览器的正确方法是什么 当我执行以下操作时,我会得到一个bundle ID引用: let bundleID=LSCopyDefaultHandlerForURLScheme(“http”作为CFString)?.takeRetainedValue(){…} 然后我就可以将bundleID与Bundle.main.bundleIdentifier进行比较 如果改用LSCopyD

由于10.15不推荐使用LSCopyDefaultHandlerForURLScheme,检查我的应用程序是否设置为默认浏览器的正确方法是什么

当我执行以下操作时,我会得到一个bundle ID引用:

let bundleID=LSCopyDefaultHandlerForURLScheme(“http”作为CFString)?.takeRetainedValue(){…}
然后我就可以将
bundleID
Bundle.main.bundleIdentifier
进行比较

如果改用LSCopyDefaultApplicationURLForURL,则会得到一个URL。为了将我的应用程序包ID与LSCopyDefaultApplicationURLForURL进行比较,我需要访问我的应用程序可能由于沙盒而无法访问的URL包


有什么建议吗?

您可以将
URL
lastPathComponent
与应用程序的名称进行比较

例如,考虑到您的应用程序名为
MyApp

var isDefaultBrowser: Bool {
    LSCopyDefaultApplicationURLForURL(URL(string: "http://")! as CFURL, .all, nil)
        .map { $0.takeRetainedValue() as URL }
        .map(\.lastPathComponent)
        .map { $0 == "MyApp.app" }
        ?? false
}

您可以使用从
LSCopyDefaultApplicationURLForURL
返回的URL检查捆绑包标识符

func isDefaultBrowser(for bundleIdentifier : String) -> Bool {
    guard let defaultbrowserURL = LSCopyDefaultApplicationURLForURL(URL(string: "http://")! as CFURL, .all, nil)?.takeRetainedValue() as URL?,
        let bundle = Bundle(url: defaultbrowserURL) else { return false }
    return bundle.bundleIdentifier == bundleIdentifier
    
}

在iOS上有没有创建这样的变量@沃克斯哈勒,你会如何为iOS做到这一点@vadian@Ryan坦白说,我不知道。