Wprowadzenie do aplikacji mobilnych w Xamarin & Xamarin.Forms

 In Technicznie

Aplikacje mobilne

W dzisiejszym świecie znaczenie aplikacji mobilnych rośnie z każdym dniem. Szacuje się, że w niedługim czasie udział aplikacji mobilnych zrówna się z aplikacjami internetowymi popularnie zwanymi web, a docelowo je wyprzedzi. Najpopularniejszym obecnie mobilnym systemem operacyjnym jest Android firmy Google, a drugie i trzecie miejsce w zależności od kraju należą do iOS firmy Apple i Windows Phone firmy Microsoft. Razem te trzy systemy obejmują ponad 99% całego rynku urządzeń mobilnych.

Tworzenie mobilnego oprogramowania

Proces wytwarzania mobilnego oprogramowania różni się znacząco od tworzenia stron i aplikacji internetowych. Rynek aplikacji web liczy sobie już wiele lat, jest ustabilizowany i ustandaryzowany. Z punktu widzenia dewelopera wystarczy stworzyć stronę dla jednej z wybranych przeglądarek, na pozostałych strona będzie wyglądać i działać tak samo. System operacyjny też nie ma znaczenia, Windows, Linux czy OS X są przezroczyste dla weba.

Zupełnie inaczej jest w przypadku aplikacji mobilnych. Aplikacja zawsze pisana jest tylko pod jedną konkretną platformę, chcąc obsłużyć więcej niż jeden system mobilny trzeba wytwarzać oddzielne wersje. Ponadto każdy z trzech producentów oferuje zamknięty ekosystem, narzuca własne standardy i wymaga znacznej biurokracji i spełniania wymagań. Przygotowanie dla klienta aplikacji mobilnej na trzy największe platformy wymaga zaangażowania znacznej ilości osób reprezentujących zupełnie różne podejścia i technologie. Dlatego najnowszym rozwiązaniem jest nowatorskie podejście do wytwarzania aplikacji mobilnych poprzez zastosowanie technologii Xamarin.

Xamarin

Technologia Xamarin pozwala na programowanie aplikacji mobilnych w jednym wspólnym języku, popularnym języku programowania C#, który podczas kompilacji aplikacji tłumaczony jest na inny wymagany język. Dzięki temu możliwe jest programowanie projektów pod różne platformy mobilne za pomocą tego samego, dobre znanego zespołowi, języka programowania. Pozwala to na znaczne ograniczenie wymaganej ilości programistów, poniesionych kosztów oraz czasu zaangażowania. Możliwe jest korzystanie z jednego z komponentów Xamarina, np pisania i kompilowania kodu C# do Javy czyli Androida, lub korzystanie z większej ilości komponentów, aż po kompilowanie kodu C# dla każdej z platform.

W skład Xamarina wchodzą następujące komponenty:

  • Xamarin Studio: IDE dostępne na Windowsa, Linuxa i OS X
  • Xamarin.Android: kompilator kodu C# do Javy
  • Xamarin.iOS: kompilator kodu C# do Objective-C
  • Xamarin.Forms: Biblioteka łącząca w sobie 3 platformy Android, iOS i Windows Phone
  • Dodatkowe rzeczy jak Xamarin Test Cloud do testowania aplikacji na tysiącach urządzeń oraz Xamarin Insights do logowania błędów na urządzeniach użytkowników

Xamarin.Forms

Biblioteka Xamarin.Forms jest ogniwem łączącym w sobie najważniejsze funkcje Xamarina, tzn pozwalającym pisać wspólny kod pod 3 największe na rynku platformy Android, iOS i Windows Phone. Głównym jej założeniem jest wyciągnięcie części wspólnej każdej z platform do oddzielnego projektu, w którym ląduje znaczna część kodu, oraz 3 projektów dla każdej z platform, w których znajdują się rzeczy specyficzne dla danego systemu. Kompilator kompilując aplikację pod daną platformę miesza kod wspólny razem z kodem specyficznym dla danej platformy, tworząc oddzielny finalny produkt dla każdej platformy. Głównymi rzeczami znajdującymi się we wspólnej części są modele danych oraz widoki odpowiedzialne za wygląd. W części specyficznej dla platformy znajdują się implementacje usług różniących się na danych systemach oraz nadpisywanie wyglądu widoków.

Przykład 1

Pole tekstowe zwane popularnie textbox jest idealnym przykładem kontrolki widoku. We wspólnym kodzie wystarczy umieścić wbudowaną w Xamarin.Forms kontrolkę Entry oraz ustawić jej właściwość Text. Podczas kompilacji Xamarin zamieni kontrolkę Entry na kontrolkę Android.Widget.EditText w przypadku Androida, UIKit.UITextField w przypadku iOS oraz Microsoft.Phone.Controls.PhoneTextBox w przypadku Windows Phone. Dodatkowo odpowiednio ustawi właściwości oraz wygląd kontrolek. Jeśli jednak chcemy uzyskać zróżnicowanie dla różnych platform, np kwadratowe rogi pasujące do stylu Windows Phone dla tej platformy, a zaokrąglone pasujące do iOS, wystarczy stworzyć implementację EntryRenderer dla jednej lub wszystkich platform i odpowiednio nadpisać wybrane właściwości.

Przykład 2

Jako przykład implementacji usługi podać można odtwarzacz dźwięków. W części wspólnej tworzymy interfejs IAudioPlayer z metodami Play(Stream audioStream) oraz Stop(). W części specyficznej dla każdej z platform implementujemy ten interfejs w sposób zgodny z danym systemem, tzn wykorzystując Android.Media.MediaPlayer dla Androida, AVFoundation.AVAudioPlayer dla iOS oraz System.Windows.Controls.MediaElement dla Windows Phone. Dzięki temu w odpowiednich miejscach wspólnego kodu możemy wykorzystywać IAudioPlayer.Play() oraz IAudioPlayer.Stop(), bez zagłębiania się w szczegóły ich działania.

Recommended Posts