给定一个IOS Bundle ID,我如何显示相应的App图标

时间:2018-11-15 06:59:37

标签: ios swift

App Icon List Comparison

我将有关进餐时间的信息存储在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
}

0 个答案:

没有答案