Skip to content

Commit 35dfce7

Browse files
authored
Better iOS app (display) name and icon handling. (#181)
1 parent a9fb8f7 commit 35dfce7

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

Sources/Packages.swift

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,11 @@ struct Project: Codable {
244244
let bundleIdentifier: String
245245

246246
init() {
247-
name = Bundle.main.infoDictionary?[kCFBundleNameKey as String] as? String ?? "Untitled"
247+
name = (Bundle.main.localizedInfoDictionary?["CFBundleDisplayName"] as? String)
248+
?? (Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String)
249+
?? (Bundle.main.localizedInfoDictionary?[kCFBundleNameKey as String] as? String)
250+
?? (Bundle.main.infoDictionary?[kCFBundleNameKey as String] as? String)
251+
?? "Untitled"
248252
bundleIdentifier = Bundle.main.bundleIdentifier ?? "No bundle identifier"
249253
}
250254
}
@@ -483,11 +487,19 @@ extension Image {
483487
}
484488
return Image(named: iconName)
485489
#elseif os(iOS) || os(tvOS) || os(visionOS)
486-
guard let iconsDictionary = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any],
487-
let primaryIconsDictionary = iconsDictionary["CFBundlePrimaryIcon"] as? [String: Any],
488-
let iconFiles = primaryIconsDictionary["CFBundleIconFiles"] as? [String],
489-
let lastIcon = iconFiles.last else { return nil }
490-
return Image(named: lastIcon)
490+
if let iconsDictionary = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any],
491+
let primaryIconsDictionary = iconsDictionary["CFBundlePrimaryIcon"] as? [String: Any] {
492+
if let iconFiles = primaryIconsDictionary["CFBundleIconFiles"] as? [String],
493+
let lastIcon = iconFiles.last,
494+
let image = Image(named: lastIcon) {
495+
return image
496+
}
497+
if let iconName = primaryIconsDictionary["CFBundleIconName"] as? String,
498+
let image = Image(named: "\(iconName)60x60") {
499+
return image
500+
}
501+
}
502+
return nil
491503
#elseif os(watchOS)
492504
guard let iconsDictionary = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any],
493505
let primaryIconsDictionary = iconsDictionary["CFBundlePrimaryIcon"] as? [String: Any],

0 commit comments

Comments
 (0)