Je commence à en arriver au point où je veux envisager de créer une version allégée de mon application iPhone. J'ai trouvé quelques éléments sur le Web qui parlent un peu du processus, à savoir:
http://developer.Apple.com/tools/XCode/XCodeprojects.html
http://www.pacificspirit.com/blog/2009/01/27/building_for_multiple_iphone_targets_in_xcode
Ce qui m'intéresse particulièrement, c'est de simplifier le processus de gestion des fichiers inclus dans les différentes versions de mon application au fur et à mesure que je modifie et améliore continuellement ma version payante.
La réponse originale provient des jours précédents l'achat de l'application. La bonne solution consiste maintenant à expédier un seul fichier binaire et à proposer votre version payante via dans les mises à niveau de l'application . C'est un peu plus de code, mais c'est un seul envoi et votre taux de conversion sera probablement meilleur.
Toutefois, si vous souhaitez toujours utiliser des versions de votre application:
Xcode prend en charge plusieurs cibles.
Dans le menu du projet, sélectionnez "Nouvelle cible ...". Ajoutez un autre exécutable iPhone (Cocoa Touch Application) pour pouvoir spécifier, ressource par ressource, les éléments à inclure dans votre cible. Cela peut inclure uniquement la compilation de certains codes dans votre version payante.
Vous pouvez obtenir un retour visuel rapide sur ce qui est inclus ou non dans la cible actuelle en cliquant avec le bouton droit de la souris sur l'en-tête de liste "Groupes et fichiers" (en haut à gauche) et en activant l'adhésion à la cible.
Vous passez d'une construction à une autre de la même manière que vous construisez entre un bâtiment pour Simulator ou un iPhone.
Vous pouvez faire deux choses au moment de la construction, au comportement d'une classe spécifique: vous pouvez inclure deux versions de la classe construites chacune pour leur cible respective ou définir un indicateur d'heure de construction pour le pré-processeur. Sélectionnez la cible dans la liste "Groupes et fichiers" puis "obtenir des informations" sur cette cible. Allez dans l'onglet de construction et recherchez "prétraitement". Vous devriez voir un élément appelé "Macros de préprocesseur", ajoutez LITE
à votre cible lite et, de la même manière, ajoutez PAID
à votre cible payée.
Dans vos fichiers source, vous pouvez déterminer au moment de la compilation la version que vous compilez pour utiliser #ifdef LITE
etc.
Pour aller encore plus loin, vous pouvez définir un indicateur global ou une variable membre AppDelegate basée sur #ifdef LITE et modifier le comportement à l'exécution des applications Lite et payantes. Je ne suis pas sûr d’y voir de la valeur.
En tant que développeur, vous voulez écrire le moins de code possible (moins de bugs, moins de temps). À mesure que les versions de construction divergent, vous devrez investir davantage de travail et effectuer des tests distincts.
À moins que vous ne fabriquiez un outil de piratage coûteux, vous pourriez envisager de garder la différence aussi simple que possible - il suffit de disposer de préférences ou de paramètres cachés. Ainsi, la majorité des vérifications et des tests feront le même travail dans les deux versions, très peu de code sera différent. La principale préoccupation est de ne pas vous alourdir en tant que développeur.
La raison d'être de versions divergentes est de s'assurer que la version gratuite ne peut pas être piratée dans une version "payée". Les personnes qui essaieraient de contourner une limitation aussi simple sont avant tout un sous-groupe de personnes qui jailbreakeraient leurs téléphones. Peu importe ce que vous faites, vous n’obtiendrez pas leur argent dans quelque condition que ce soit, mais ils sont tellement impressionnés qu’ils l’achètent juste pour montrer leur appréciation.
Le créateur de "Flower Garden" détaille les avantages/inconvénients de différentes approches pour créer une version allégée ici:
http://gamesfromwithin.com/from-full-to-lite-in-under-an-hour
J'ai trouvé le succès avec:
Didacticiel - Même projet Xcode Création de plusieurs produits pour iPhone http://adeem.me/blog/2009/04/18/tutorial-same-xcode-project-create-multiple -produits-pour-iphone/
Cela couvre en grande partie ce que Roger Nolan a mentionné dans sa réponse à la question, mais pas à pas avec des captures d’écran.
Il vous permet d'utiliser C # ifdef pour inclure ou exclure des fonctionnalités de votre application.
Certains détails n'étaient pas tout à fait corrects - à cause des différences de Xcode, j'en suis sûr -, mais il n'a pas été trop difficile de trouver la bonne/nouvelle façon de faire chaque étape.
REMARQUE: vous devrez accéder à Apple pour obtenir un nouvel ID d'application pour la version Lite de votre application. Les étapes décrites dans le didacticiel créeront une copie du fichier info.plist, que vous renommerez probablement en quelque chose comme infoLite.plist. Dans ce fichier, vous devrez modifier "l'identificateur d'ensemble" pour qu'il corresponde à ce nouvel identifiant d'application. .
Avec iPhone 3.0, vous pouvez utiliser des achats intégrés et permettre ainsi de déverrouiller toutes les fonctionnalités sans avoir à créer plusieurs applications. Je pense aussi que cela évitera aux gens de recevoir ceci gratuitement, mais je n'en suis pas aussi sûr.
J'ai utilisé une branche de git. J'ai branché mon application principale et fait quelques ajustements pour désactiver un tas de contenu. Maintenant, je travaille principalement dans la branche maître et passe en mode lite et fusionne au plus tard lorsque des développements majeurs se produisent. Fonctionne très bien.
La meilleure approche consiste à avoir un seul projet, avec plusieurs cibles à la place, une pour chaque version de votre application. Alors, quelles sont les cibles: Cibles multiples