2011-09-13 14 views
11

Ho un'applicazione per iPhone che è attualmente nell'app store. Voglio fare esattamente quella che è esattamente la stessa applicazione, ma che è gratuita e presenta annunci pubblicitari.Aggiunta di una destinazione a un progetto Xcode

Il mio piano era quello di copiare semplicemente il progetto, crearne uno nuovo e aggiungere annunci nel codice e rilasciarlo come app separata. Tuttavia, qualcuno ha affermato che la soluzione migliore sarebbe quella di aggiungere un target aggiuntivo all'applicazione esistente, fornendo due file binari in fase di esecuzione.

Sembra una buona soluzione per me, tuttavia sono un po 'confuso su come modificherei il codice per inserire annunci nel nuovo target e lasciare intatto l'originale?

risposta

7

ho seguito this tutorial che, anche se vecchio, era praticamente lo stesso per Xcode 4. ho duplicato il bersaglio e p-lista, assicurandosi che ero in grado di funzionare con i cambiamenti e non condizionare il pieno bersaglio di versione.

Ho quindi duplicato i file .xib che sarebbero diversi. Se guardi sotto le impostazioni del progetto, da qualche parte puoi trovare una lista che ti permette di scegliere quali risorse includere. Includere gli xib della versione lite nella versione lite e la versione completa nel pieno rispettivamente. Quindi sarai in grado di modificare ognuno senza influenzare l'altro.

Le icone e le immagini possono essere modificate allo stesso modo. Basta creare un set di icone versione lite o un altro set di immagini e includere le icone lite nelle impostazioni delle risorse del target lite invece delle immagini della versione completa.

Inoltre, ti consigliamo di creare alcuni macro del preprocessore. Nella scheda di build, cercali e crea una macro chiamata LITE_VERSION (o quello che vuoi, non importa) per l'opzione di pre-elaborazione ogni - debug, distribuzione e rilascio.

Ciò consente di aggiungere codice diverso negli stessi file .h e .m. Basta usare

#ifdef LITE_VERSION 
// Lite version only code here 
#endif 

per separare i due. Puoi anche usare #ifndef LITE_VERSION per aggiungere il codice solo alla versione completa.

Questo è tutto! Dopo tutti i passaggi precedenti, dovresti essere in grado di modificare i file .xib della versione lite, inserire il codice solo nella versione lite o completa e avere immagini e icone separate per ciascuno.

+0

Grazie. Seguirò questo tutorial. Apprezzato. –

+1

Sotto Xcode 4 le cose appaiono diverse, e sfortunatamente tutti gli articoli e i post sul blog in internet sembrano riferirsi a Xcode3. Sotto Xcode 4 il file info.plist NON viene automaticamente duplicato quando duplichi il target, e posso trovare un modo per produrre due file plist separati, di lavoro, uno per target. –

+0

Non riuscivo a capire come farlo automaticamente, ma non è così difficile copiare il primo e rinominarlo. –

2

La risposta di XenElement è corretta. Ma dovresti vedere le migliori pratiche per farlo. Dovresti avere una classe identificatore per verificare la presenza di obiettivi. Se usi le macro ovunque nel codice, non sembrerà un bene per te e per altri sviluppatori. In this little blog post puoi vedere come creare quel tipo di classe identificatore e imparare alcune best practice sugli obiettivi in ​​xcode.

0

Ho seguito questo tutorial Just2us: How to create multiple targets for Xcode iPhone Projects.

Ho deciso di modificare il passaggio 3 con Stu's clue, impostando FULL_VERSION esplicitamente nella versione a pagamento.

"Per affrontare il problema di non avere accidentalmente LITE_VERSION definito come un preprocessore macro (liberando così una versione completa per sbaglio), ho messo questo piccolo frammento di codice in un file di intestazione (ha solo bisogno di essere da qualche parte nel base di codice, basta assicurarsi che è comune a tutte le configurazioni) ":

#ifndef LITE_VERSION 
    #ifndef FULL_VERSION 
     #error You probably forgot to specify if this is the Lite or Full version of the app 
    #endif 
#endif 

PS: ho scritto il codice di cui sopra a destra dopo il # import in AppDelegate.

Problemi correlati