Swift: Can I get information for an application which is not running?(SWIFT:我可以获取未运行的应用程序的信息吗?)
本文介绍了SWIFT:我可以获取未运行的应用程序的信息吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在编写一个存储有关其他应用程序的数据的应用程序。我可以很容易地找到当前最前面的应用程序及其信息:
let frontApp = NSWorkspace.shared.frontmostApplication!
从那里我可以得到:
let currentAppName = currentApp.localizedName ?? "Dunno"
let currentAppIcon = currentApp.icon
如果应用程序不在前台,我知道我可以循环访问其他正在运行的应用程序:
let apps = NSWorkspace.shared.runningApplications
for app in apps as [NSRunningApplication] {
print(app.localizedName ?? "whatever")
print(app.bundleIdentifier ?? "bundle")
}
我希望获得有关当前未运行的应用程序的相同信息,但我确实知道该应用程序的捆绑包标识符。我怎样才能得到这个?
推荐答案
首先,使用
获取应用程序的捆绑包let bundleURL = NSWorkspace.shared.urlForApplication(withBundleIdentifier: someBundleID)!
let bundle = Bundle(url: bundleURL)!
一旦有了捆绑包,您就可以从NSRunningApplication:
bundleIdentifier您已经知道了。bundleURL您刚刚掌握了上面的代码。executableArchitecture现在是bundle.executableArchitectures,带有复数。因为它没有运行,所以您获得了可以在其上运行的所有体系结构,而不是它正在运行的特定体系结构。executableURL您可以使用bundle.executableURL,没有问题。launchDate、isFinishedLaunching、processIdentifier、ownsMenuBar没有意义,因为应用程序没有运行。
icon和localizedName。我提出的获得这些数据的方法不太可靠。若要获取icon,请执行
NSWorkspace.shared.icon(forFile: bundleURL.path)
我确信这至少在99%的情况下会产生与NSRunningApplication.icon相同的结果,但我不确定是否存在边缘情况...
获取localizedName更不可靠。有两种方法,两种都不好。选择最适合您目的的
FileManager.default.displayName(atPath: bundleURL.path)这将为您提供本地化名称,但如果用户重命名应用程序,它将返回新名称,而不是包名称从捆绑包的
localizedInfoDictionary获取CFBundleDisplayName,回退到CFBundleName和infoDictionary。由于某种原因,这并没有给出本地化名称,即使我说了localizedInfoDictionary。let infoDict = (bundle.localizedInfoDictionary ?? bundle.infoDictionary) let localizedName = infoDict?["CFBundleDisplayName"] ?? infoDict?["CFBundleName"]
这篇关于SWIFT:我可以获取未运行的应用程序的信息吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:SWIFT:我可以获取未运行的应用程序的信息吗?
猜你喜欢
- Android - 拆分 Drawable 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
