2011-10-28 9 views
6

Sto studiando l'integrazione di Edicola in una nuova applicazione iOS e desidero sapere se posso farlo in un modo che consenta comunque all'app di funzionare su dispositivi che non sono stati migrati su iOS 5.Integrazione di Edicola senza compromettere la compatibilità all'indietro

Qualcuno può darmi qualche feedback su come progettare un'applicazione per gestirlo?

So che è possibile avere una singola applicazione con diversi target e set di file sorgente, ma preferirei mantenere il codebase il più possibile unificato e testare dinamicamente le funzionalità di Edicola.

risposta

5

Quello che devi prima di tutto per collegare in modo debole la tua applicazione al framework NewsstandKit. Ciò evita che un dispositivo con una versione iOS < 5 si arresti in modo anomalo a causa delle librerie mancanti.

Poi in fase di esecuzione è necessario evitare di chiamare i metodi NK e facendo riferimento alle classi di NK che ovviamente non sono disponibili in iOS < 5. In questo caso è possibile utilizzare metodi come NSClassFromString() o altri c-obj runtime caratteristiche che permettono di rilevare dinamicamente l'esistenza di queste funzionalità.

Una raccomandazione che posso fare in questo caso è fornire una direttiva pre-compilatore che consente di isolare tutti gli elementi di Edicola a livello di compilazione. In questo modo puoi provare a compilare usando SDK 4 (se ce l'hai) e vedere gli errori o gli avvertimenti del compilatore.

E.g. se si aggiunge nella vostra Prefix.pch una definizione del genere


#define WILL_USE_NK 

allora si può racchiudere tutti i riferimenti NK in questo modo:


#ifdef WILL_USE_NK 
... your NK statements go here ... 
#endif 

Più tardi, quando si compila l'applicazione con SDK4 si mantiene questo definizione in modo da avere una vera compilazione SDK4 valida per dispositivi iOS4 (che puoi testare) e sarai sicuro che tutti i tuoi riferimenti NK non saranno utilizzati da un'app iOS4. Quindi devi #undef questa definizione e compilare con SDK5 (ovviamente mantenendo iOS 4.x come target minimo) prima di distribuire l'app.

Ovviamente in questo modo non sei protetto da tutti i possibili errori ma almeno hai isolato i riferimenti NK.

Per quanto riguarda la migliore strategia sulla business logic dell'applicazione, questo dipende da voi: non è un compito facile come ora Edicola si prende cura di molti aspetti, come il download in background e così via. Inoltre, il modello di rivista è ora diviso tra il modello esistente e le funzionalità di NKIssue, ma tutti questi sono dettagli di implementazione che vanno oltre questa specifica domanda.

+0

Ciao Viggio, questa è una grande idea, grazie. Ciò mi consente di mantenere il mio codice unificato, isolando i pezzi che potrebbero causare problemi di compatibilità con le versioni precedenti. Grazie mille! – James

Problemi correlati