2015-08-14 16 views
5

Sto lavorando a un'app vicina al lancio ma che utilizza il framework ABAddressBook. Con la deprecazione di ABAddressBook in iOS9, devo controllare la versione iOS dell'utente e utilizzare ABAddressBook per gli utenti pre iOS9 e CNC per gli utenti iOS9?ABAddressPrenota alla transizione delle app di CNContact

Come lo gestiscono tutti gli altri? Non sono mai stato in una situazione come questa.

+0

Hai trovato un modo per gestire questo? – rordulu

+1

Mi piacerebbe sapere come tutti stanno affrontando questo –

+0

No, non ho ancora trovato una risposta. – Felker

risposta

4

Ho anche avuto a che fare con la ricerca di questo problema, quello che ho deciso di fare è come suggerisci; controllare la versione di iOS gli utenti a fare qualcosa di simile a quanto segue:

NSString *version = [[UIDevice currentDevice] systemVersion]; 
BOOL isVersion8 = [version hasPrefix:@"8."]; 
BOOL isVersion7 = [version hasPrefix:@"7."]; 
//... 

... continuando basata sulle versioni che hai deciso di sostenere per la tua app.

Quindi eseguo un controllo per utilizzare il framework Addressbook per versioni precedenti a iOS 9 e Contact Framework per iOS 9 e versioni successive.

if(isVersion7 || isVersion8){ 
    //Use AddressBook 
    } 
else{ 
    //Use Contacts 
} 

Questo è il modo migliore che potevo pensare a che fare con questa storia ... deprecazione

+0

Sono passate due settimane e penso che questa sia l'unica opzione, quindi sto segnalando questo come risposta. Se si presenta un'opzione migliore, la cambierò. Grazie, UberJames! – Felker

2

obsolete non significa rimosso. Basta fare il collegamento a entrambi i framework come facoltativo e iniziare a progettare il flusso di lavoro dei dati in grado di gestire entrambi i framework. Inoltre, tieni presente che CNContact è nuovo e pieno di bug.

Una volta che pensate che la vostra applicazione è refactoring e iOS si è evoluta al 9,1 dargli una luce verde

Come sapere se il sistema supporta la funzionalità

1) Verificare se la classe esiste

if(NSClassFromString(@"CNContact")) { 
    // Do something 
} 

Per le classi debolmente collegate, è possibile scrivere direttamente la classe direttamente. In particolare, questo funziona per i framework che non sono esplicitamente collegati come "Richiesto". Per le classi mancanti, l'espressione è pari a zero.

2)

#ifned NSFoundationVersionNumber_iOS_9 
#def NSFoundationVersionNumber_iOS_9 NUMBER 
#endif 

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_9) { 
    // Use address book 
} else { 
    // Use contact framework 
} 

eseguire l'applicazione simulatore di trovare la NSFoundationVersionNumber costante

0
if #available(iOS 9, *) 
{ 
    // iOS 9 - CNContact 
} 
else 
{ 
    // iOS 8 - ABAddressBook 
} 

Questo è il modo giusto per controllare.