Sobes.tech
Middle

Hoe verander je het app-icoon afhankelijk van de omgeving?

sobes.tech AI

Antwoord van AI

Afhankelijk van de omgeving (bijvoorbeeld Dev, Staging, Prod) kan het volgende worden gebruikt:

  1. Het maken van aparte doelen (Targets) voor elke omgeving.
  2. Gebruik maken van configuratiebestanden (.xcconfig).
  3. Toevoegen van aangepaste sleutels in Info.plist.

Proces:

  • Maak duplicaten van het hoofddoel van de app voor elke omgeving.
  • In de instellingen van elk nieuw doel, wijzig Info.plist File of voeg de sleutel CFBundleIconFiles toe en geef de naam van het icoonbestand op.
  • In de .xcconfig-bestanden voor elke omgeving, definieer een variabele die verwijst naar de juiste Info.plist.
  • Stel in de build-instellingen van het hoofddoel Info.plist File in op ${INFO_PLIST_FILE} (waar INFO_PLIST_FILE een variabele uit .xcconfig is).

Voorbeeld van .xcconfig voor Dev:

// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist

Voorbeeld van Info_Dev.plist:

<!-- Info_Dev.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	...
	<key>CFBundleIcons</key>
	<dict>
		<key>CFBundlePrimaryIcon</key>
		<dict>
			<key>CFBundleIconFiles</key>
			<array>
				<string>AppIconDev</string> // Asset-naam voor Dev-icoon
			</array>
		</dict>
	</dict>
	...
</dict>
</plist>

Een alternatieve aanpak zonder doelen te dupliceren, is het gebruik van scripts tijdens de build die Info.plist aanpassen op basis van de huidige configuratie. Maar de aanpak met aparte doelen is duidelijker en wordt beter ondersteund.

Voor het beheer van icoon-assets kunnen aparte Asset Catalogs voor elke doel of configuratie worden gebruikt, of sets van iconen worden eenmalig een naam gegeven (AppIconDev, AppIconStaging, AppIconProd) en de juiste naam wordt in Info.plist aangegeven.