Sobes.tech
Middle

Comment changer l'icône de l'application en fonction de l'environnement?

sobes.tech IA

Réponse de l'IA

Selon l’environnement (par exemple, Dev, Staging, Prod), vous pouvez utiliser :

  1. Créer des cibles (Targets) séparées pour chaque environnement.
  2. Utiliser des fichiers de configuration (.xcconfig).
  3. Ajouter des clés personnalisées dans Info.plist.

Processus :

  • Dupliquer la cible principale de l’application pour chaque environnement.
  • Modifier dans la configuration de chaque nouvelle cible le Info.plist File ou ajouter la clé CFBundleIconFiles et indiquer le nom du fichier d’icône.
  • Dans les fichiers .xcconfig pour chaque environnement, définir une variable pointant vers le Info.plist correspondant.
  • Dans les paramètres de build de la cible principale, définir Info.plist File sur ${INFO_PLIST_FILE} (où INFO_PLIST_FILE est une variable dans .xcconfig).

Exemple de .xcconfig pour Dev :

// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist

Exemple de 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> // Nom de l’asset pour l’icône Dev
			</array>
		</dict>
	</dict>
	...
</dict>
</plist>

Une autre approche sans dupliquer les cibles consiste à utiliser des scripts lors de la compilation pour modifier Info.plist en fonction de la configuration. Cependant, la méthode avec des cibles séparées est plus claire et maintenable.

Pour la gestion des assets d’icônes, il est possible d’utiliser des Catalogues d’Assets séparés pour chaque cible ou configuration, ou de nommer les ensembles d’icônes de façon unique (AppIconDev, AppIconStaging, AppIconProd) et de spécifier le nom correspondant dans Info.plist.