Rozpoznawanie typu iPhone’a i wersji systemu

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ąć :)

Przycisk „Long press” w aplikacji iPhonowej

Czasami w aplikacjach pojawia się potrzeba by pewna interakcja z aplikacją była potwierdzona przez użytkownika. W szczególności jeżeli  ma daleko posunięte efekty na przykład usunięcie dużej ilości danych. Można użytkownika zabezpieczyć przed przypadkowym kliknięciem za pomocą tzw. długiego przyciśnięcia. By taka akcja była zrozumiała dla użytkownika dobrze jest przedstawić mu to graficznie. Stąd na przycisku musi pojawić się informacja, że przycisk reaguje na długie przyciśnięcie na przykład za pomocą  tekstu. Oprócz tego ważne jest by pokazać użytkownikowi informację o upływającym czasie i ile zostało do końca. Poniżej pokażę przykładową realizację tej idei na platformie iOS poniżej.

Czytaj dalej

BlueCash.pl na iPhone oraz start projektu odloz.pl

Witam po dłuższej przerwie,

Mam dwa ogłoszenia. Po pierwsze nie wszyscy wiedzą, ale od jakiegoś czasu w AppStore dostępna jest aplikacja wykonana przeze mnie BlueCash.pl. Pozwalająca na wykonanie szybkich przelewów na telefon komórkowy i na dowolne konto bankowe. A już nie długo będzie jej dalszy rozwój (bardzo ciekawy). Jest też wersja Androidowa, której wytworzenie opiekowałem się ;) Zapraszam do zapoznania się :)

Druga sprawa to start nowej strony odloz.pl, na której umieszczane będą kalkulatory finansowe zachęcające do oszczędzania oraz do wyciśnięcia ile się da z każdej złotówki jaką się posiada. Mam nadziej, że wesprzecie komentarzami i dobrym słowem oba projekty. Zapraszam do zapoznania się :)

 

BZ WBK INFO na iPada

Nie dawno trafił do App Store BZ WBK Info w wersji dla iPada. Pracując przy tej wersji dostrzegłem pewne niuanse pomiędzy tymi urządzeniami i ich zachowaniem. Także port z iPhone na iPada nie obszedł się bez specjalnych poprawek dla iPada ;)  Muszę przyznać, że poradniki Apple oraz wsparcie w Xcode jest na zadowalającym poziomie. Co prawda część widoków musiałem powielić by lepiej je dostosować do wyższej rozdzielczości, ale w tym wspomaga nas środowisko.

Prędkość mam iPhone 3G i na tym urządzeniu aktualizacja bazy bankomatów w tej aplikacji trwa około 1,5 minuty natomiast na iPadzie około 15s. Zatem różnica pomiędzy procesorami jest znacząca ;)

Z ciekawostek ogólnych iPad i jego rozdzielczość pozwala na spłaszczenie nawigacji. Niestety w obecnej wersji aplikacji nie zdążyłem tego zrobić. Ale nawet rozbudowane aplikacje na iPadzie można ładnie zbudować w oparciu o nawigację poprzez treść. Mam nadzieję, że będę miał w najbliższym czasie możliwość  właśnie w tej kwestii poprawić tę aplikację. Tymczasem zapraszam do obejrzenia filmiku prezentującego najnowszą wersję (filmik nakręcony przez Blue Media):

httpv://www.youtube.com/watch?v=JFqi2zQmqAI

zubibu-logo

Platformy mobilne a Zubibu

Dziś chciałem wspomnieć o spotkaniu 3Camp, na którym byłem 17 czerwca. Było ono o tyle ciekawe, że poruszało to czym zajmuje się po pracy czyli programowaniem na platformy mobilne. I tak chciałem zaprezentować wnioski z tego spotkania i dlaczego Zubibu.com powstało w takiej formie jak powstało ;)

Czytaj dalej

SVN na MACu

Wstęp

Subversion – Ci co zasmakowali nie potrafią żyć bez niego, a Ci co nie spróbowali uważają go za zbędny. System kontroli wersji kodu i innych dokumentów jest dla mnie narzędziem nieocenionym. Nie jest to bynajmniej moja ocena tego narzędzia, a wynik doświadczenia wielu programistów. Dlatego chciałbym opisać jak korzystać z tego narzędzia na Mac OS X. Co mamy do wyboru, i czego obecnie ja używam oraz dlaczego? Nie będę tu opisywał co to jest system kontroli wersji ;)

Czytaj dalej

Dwie nowe aplikacje w AppStore

W końcu oficjalnie (wcześniej nie mogłem niestety z różnych powodów) mogę się pochwalić dwoma aplikacjami stworzonymi na platformę iPhone. Jedna jest aplikacją, która pomoże Ci w razie wypadku szybko dodzwonić się do ubezpieczyciela, natomiast druga pozwala na uzyskanie informacji z rynków finansowych i informacji z Banku Zachodniego WBK.

Czytaj dalej

Smart Time po upgradzie do 2.1

Jakiś czas temu firma leftcoastlogic.com wypuściła upgrade programu do zarządzania czasu o którym pisałem w poprzednim poście. W tej wersji wyraźnie postawiono na integrację z kalendarzem Google. Wprowadzono 12 kalendarzy (po konsultacjach na forum). Całodniowe zdarzenia, mapowanie kalendarzy w Smart Time do kalendarzy, które już są w kalendarzu Google. Uaktualnie wypuszczone zostało 23 stycznia. Teraz po tygodniu mogę cokolwiek powiedzieć o tej aktualizacji, zacznę od plusów: Czytaj dalej