Come rendere l’app per iPhone compatibile con diverse versioni di SDK (firmware)

Con iOS4 che uscirà presto, ho già programmato di includere un iAd in un futuro aggiornamento di una mia app. Presumo che ciò renderà la mia app inutilizzabile per chiunque su un firmware inferiore a 4.0. C’è un modo per cambiare le variabili e il file .xib in base al firmware dell’utente? Saluti.

Sì, è ansible creare con l’SDK più recente (ovvero: 5.1) e continuare a funzionare su dispositivi con versioni precedenti del firmware (SDK).

  • Imposta il tuo objective di distribuzione sulla prima versione che vuoi essere in grado di eseguire, ad esempio: 3.0.
  • Imposta il tuo SDK di base sull’ultima versione che stai compilando, ovvero: 5.0. In questo modo puoi fare riferimento alle definizioni e ai simboli più recenti nel tuo codice. In questo articolo “SDK e obiettivi di distribuzione” viene descritto in dettaglio l’SDK di distribuzione rispetto a SDK di base.
  • Debole collegamento alle librerie / framework con simboli che sono disponibili solo nel nuovo iOS. Questo è così la tua app verrà eseguita su un dispositivo che non ha i simboli più recenti.
  • È necessario verificare che sia disponibile un metodo più recente prima di chiamarlo. Devi assicurarti di non chiamare un metodo 5.0 o 4.X solo quando la tua app si trova su un dispositivo <4.0. Naturalmente è necessario gestire con grazia le versioni precedenti utilizzando metodi meno recenti o non supportando particolari funzionalità che richiedono il supporto SDK più recente.
  • NOVITÀ w / XCode 4.2: per supportare i dispositivi più vecchi è necessario aggiungere armv6 alle architetture di compilazione e rimuovere armv7 dall’elenco delle funzionalità del dispositivo richieste.

Vedi queste domande e risposte SO per maggiori dettagli:

  • objective di distribuzione vs base / sdk attivo
  • metodo consigliato per supportare la retrocompatibilità
  • Come opzionalmente usi le funzionalità di iPhone 3.0 in un’app compatibile 2.0
  • iPhone dev framework debole
  • debole collegamento con IB
  • errore di compilazione universale per iphone / ipad app
  • le app per iPhone dovrebbero includere armv6