Sup*_*off 3 macos cocoa default objective-c nsurl
我正在 Xcode 中开发 macOS 应用程序。我需要做的事情之一是打开系统默认网络浏览器的 URL。我弹出一个警报,为用户提供此选项。该警报应该显示默认网络浏览器的名称。但是我无法弄清楚默认网络浏览器的名称。
我尝试过以下代码:
NSLog(@"%@", LSCopyDefaultApplicationURLForContentType(kUTTypeURL, kLSRolesAll, nil));
Run Code Online (Sandbox Code Playgroud)
file:///Applications/Opera.app/即使我的默认浏览器设置为 Safari,它也会返回。无论我将默认浏览器更改为什么(Chrome、Safari、Firefox 等),上述方法都只会返回 Opera 浏览器的 URL。
有谁知道如何找出默认浏览器的名称是什么?我知道如何在默认浏览器中打开 URL,这很容易,但获取默认浏览器的名称却不是。
我知道这是可能的,因为像 Tweetbot 这样的应用程序有一个选项“在 Safari 中打开”,该选项会更改为您的默认浏览器。
感谢您抽出时间,丹。
您可以使用[[NSWorkspace sharedWorkspace] open:url]在默认浏览器中打开任何 URL 并[[NSWorkspace sharedWorkspace] URLForApplicationToOpenURL: url]获取给定 URL 的默认应用程序的 URL。
要获取应用程序名称,请尝试[[NSBundle bundleWithURL:appUrl] objectForInfoDictionaryKey:@"CFBundleDisplayName"]or[[NSBundle bundleWithURL:appUrl] objectForInfoDictionaryKey:@"CFBundleName"]如果第一个为空。如果两者都失败,[appUrl deletingPathExtension] lastPathComponent]可以作为最后的手段。
请参阅此处的文档:
https://developer.apple.com/documentation/appkit/nsworkspace/1533463-openurl?language=objc
| 归档时间: |
|
| 查看次数: |
2732 次 |
| 最近记录: |