gpt4 book ai didi

objective-c - 获取 macOS 默认浏览器名称 - LSCopyDefaultApplicationURLForContentType

转载 作者:行者123 更新时间:2023-12-03 16:28:19 26 4
gpt4 key购买 nike

我正在 Xcode 中开发 macOS 应用程序。我需要做的事情之一是打开系统默认网络浏览器的 URL。我弹出一个警报,为用户提供此选项。该警报应该显示默认网络浏览器的名称。但是我无法弄清楚默认网络浏览器的名称。

我尝试了以下代码:

NSLog(@"%@", LSCopyDefaultApplicationURLForContentType(kUTTypeURL, kLSRolesAll, nil));

即使我的默认浏览器设置为 Safari,它也只会返回 file:///Applications/Opera.app/。无论我将默认浏览器更改为什么(Chrome、Safari、Firefox 等),上述方法都只会返回 Opera 浏览器的 URL。

有谁知道如何找到默认浏览器的名称是什么?我知道如何在默认浏览器中打开 URL,这很容易,但获取默认浏览器的名称却不是。

我知道这是可能的,因为像 Tweetbot 这样的应用程序有一个选项“在 Safari 中打开”,该选项会更改为您的默认浏览器。

感谢您抽出时间,丹。

最佳答案

您可以使用 [[NSWorkspace sharedWorkspace] open:url] 在默认浏览器中打开任意 URL,并使用 [[NSWorkspace sharedWorkspace] URLForApplicationToOpenURL: url] 获取给定 URL 的默认应用程序的 URL。

要获取应用名称,请尝试 [[NSBundle bundleWithURL:appUrl] objectForInfoDictionaryKey:@"CFBundleDisplayName"][[NSBundle bundleWithURL:appUrl] objectForInfoDictionaryKey:@"CFBundleName"] 如果第一个为空。如果两者都失败,[appUrl movingPathExtension] lastPathComponent] 可以作为最后的手段。

请参阅此处的文档:

https://developer.apple.com/documentation/appkit/nsworkspace/1533463-openurl?language=objc

https://developer.apple.com/documentation/appkit/nsworkspace/1533391-urlforapplicationtoopenurl?language=objc

https://developer.apple.com/documentation/foundation/nsbundle/1408696-objectforinfodictionarykey?language=objc

关于objective-c - 获取 macOS 默认浏览器名称 - LSCopyDefaultApplicationURLForContentType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44778078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com