我将有关进餐时间的信息存储在Apple的Health App / DB中。当我查看Apples Health App的用餐信息时(图像的顶部屏幕),源App图标将包含在列表中。
当我尝试在我的应用程序中执行相同的操作(图像的底部屏幕)时,它对于我的应用程序BundleID可以正常工作,但是我无法从Health App提供的替代源App的BundleID中检索应用程序图标。我正在使用下面显示的代码来尝试实现这一目标。我不确定自己在做什么错,也许是错误的方法,也许错过了一些设置调用(例如在使用前打开Bundle)。我已经在第三方健身/营养应用程序中看到了这种用法,因此必须有某种方法可以做到这一点。我会尽力提供帮助或重定向。预先感谢。
func getAppIcon(_ theBundleID: String) -> UIImage {
guard let iconsDictionary = Bundle.init(identifier: theBundleID)!.infoDictionary?["CFBundleIcons"] as? NSDictionary,
let primaryIconsDictionary = iconsDictionary["CFBundlePrimaryIcon"] as? NSDictionary,
let iconFiles = primaryIconsDictionary["CFBundleIconFiles"] as? [String],
// First will be smallest for the device class, last will be the largest for device class
let firstIcon = iconFiles.first,
let icon = UIImage(named: firstIcon as String) else {
return UIImage()
}
return icon
}