Zaprezentuje poniżej proste porównania umożliwiające rozpoznawanie wersji systemu i/lub urządzenia na jakim uruchomiona jest aplikacja. W tym celu skorzystałem z kilku rozsianych informacji, które połączyłem w łatwe warunki. Dla łatwiejszej pracy na początku zdefiniowałem parę makr w pliku Aplikacja-Prefix.pch
:
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) #define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0f) #define IS_RETINA ([[UIScreen mainScreen] scale] == 2.0f)
Ostatnie z nich nie jest wymagane ale czasem może się przydać. Teraz posiadając dostęp w każdym miejscu aplikacji do tych makr, możemy uzależnić działanie aplikacji np. załadowanie obrazka w zależności od urządzenia i lub systemu. I tak możemy dla przykładu dokonać takiego sprawdzenia:
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { // zasoby dla wersji ponizej 7.0 if(IS_IPHONE_5) { // ios 7 + iPhone 5 [background setImage:[UIImage imageNamed:@"background-iphone-5-ios-6.1.png"]]; } else { // ios 7 + iPhone 4/4s [background setImage:[UIImage imageNamed:@"background-iphone-4-ios-6.1.png"]]; } } else { // ios <= 6.1 if(IS_IPHONE_5) { // ios <= 6.1 + iPhone 5 [background setImage:[UIImage imageNamed:@"background-iphone-5-ios-7.png"]]; } else { // ios <= 6.1 + iPhone 4/4s [background setImage:[UIImage imageNamed:@"background-iphone-4-ios-7.png"]]; } }
Sprawdzenie główne sprawdza na jakiej wersji systemu mamy uruchomioną aplikację. Natomiast wewnętrzne sprawdzenia przekazują informacje o tym czy program uruchomiony jest na iPhonie 5, 5S czy na starszym mniejszym modelu. Można także precyzyjniej rozpoznawać wersje systemu korzystając ze stałych zdefiniowanych w SDK:
#define NSFoundationVersionNumber_iPhoneOS_2_0 678.24 #define NSFoundationVersionNumber_iPhoneOS_2_1 678.26 #define NSFoundationVersionNumber_iPhoneOS_2_2 678.29 #define NSFoundationVersionNumber_iPhoneOS_3_0 678.47 #define NSFoundationVersionNumber_iPhoneOS_3_1 678.51 #define NSFoundationVersionNumber_iPhoneOS_3_2 678.60 #define NSFoundationVersionNumber_iOS_4_0 751.32 #define NSFoundationVersionNumber_iOS_4_1 751.37 #define NSFoundationVersionNumber_iOS_4_2 751.49 #define NSFoundationVersionNumber_iOS_4_3 751.49 #define NSFoundationVersionNumber_iOS_5_0 881.00 #define NSFoundationVersionNumber_iOS_5_1 890.10 #define NSFoundationVersionNumber_iOS_6_0 993.00 #define NSFoundationVersionNumber_iOS_6_1 993.00
Świat Apple zmienia się bardzo dynamicznie. Kilka razy do roku pojawiają się albo nowe systemy albo urządzenia, które powiększają gamę urządzeń do testowania i możliwych kombinacji. Tym samym kod obsługujący duży zakres urządzeń jest co raz bardziej skomplikowany. Na szczęście pokrycie rynku telefonami z zainstalowanym iOS 7 wynosi już ponad 70% zgodnie z artykułem na macrumors.com, więc obsługę iOS6 pewnie będzie można za jakiś czas usunąć :)
Najnowsze komentarze