+ All Categories
Home > Documents > Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ...

Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ...

Date post: 03-Jun-2020
Category:
Upload: others
View: 12 times
Download: 0 times
Share this document with a friend
50
Transcript
Page 1: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ
Page 2: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Tytuł oryginału: Xamarin Cross-Platform Development Cookbook

Tłumaczenie: Andrzej Watrak

ISBN: 978-83-283-3537-0

Copyright © Packt Publishing 2016

First published in the English language under the title 'Xamarin Cross-Platform Development Cookbook - (9781785880537)'

Polish edition copyright © 2017 by Helion SA. All rights reserved.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/xamari.zip

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/xamariMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Spis tre ci

O autorze 9

O korektorze merytorycznym 11

Wst p 13

Rozdzia 1. Jeden pier cie , by rz dzi wszystkimi 19

Wprowadzenie 19Tworzenie uniwersalnego rozwi zania 20Tworzenie uniwersalnego ekranu logowania 29Korzystanie ze wspólnych funkcjonalno ci systemów 35Uwierzytelnianie u ytkowników za pomoc serwisów Facebook i Google 43

Rozdzia 2. Raz deklaruj, wsz dzie wizualizuj 53

Wprowadzenie 53Tworzenie uniwersalnej aplikacji z interfejsem zak adkowym 54Kodowanie bloków funkcjonalnych interfejsu u ytkownika i wyzwalaczy 61Umieszczanie w pliku XAML warto ci w a ciwych dla danego systemu 70Stosowanie w asnych mechanizmów do zmiany wygl du kontrolek 75

Rozdzia 3. Natywne kontrolki urz dze i ich funkcjonowanie 81

Wprowadzenie 81Wy wietlanie natywnych stron za pomoc wizualizatorów 82Obs uga gestów na ró nych urz dzeniach 91Wykonywanie zdj w aplikacji za pomoc natywnej kontrolki aparatu fotograficznego 95

Rozdzia 4. Ró ne pojazdy, ten sam silnik 109

Wprowadzenie 109Sposoby tworzenia uniwersalnego kodu dla ró nych systemów 110Korzystanie z lokalizatora zale no ci 118

Poleć książkęKup książkę

Page 4: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Spis tre ci

4

Korzystanie z zewn trznego kontenera wstrzykiwanych zale no ci 122Wzorzec projektowy MVVM aplikacji 127Korzystanie z komunikatora zdarze 136Globalizowanie aplikacji 138

Rozdzia 5. Hej, gdzie s moje dane? 147

Wprowadzenie 147Kodowanie uniwersalnego dost pu do bazy danych SQLite 148Wykonywanie operacji CRUD na bazie SQLite 155Korzystanie z internetowych us ug REST 161Korzystanie z natywnych bibliotek REST i wydajne wysy anie zapyta przez sie 168

Rozdzia 6. Jeden za wszystkich, wszyscy za jednego 177

Wprowadzenie 177Tworzenie uniwersalnych wtyczek 178Robienie zdj i nagrywanie filmów 185Odczytywanie danych GPS 190Wy wietlanie i wysy anie lokalnych powiadomie 195

Rozdzia 7. Wi zanie danych 201

Wprowadzenie 201Wi zanie danych w kodzie C# 202Wi zanie danych w kodzie XAML 204Dwukierunkowe wi zanie danych 206Korzystanie z konwerterów warto ci 211

Rozdzia 8. Lista do wgl du 217

Wprowadzenie 217Wy wietlanie kolekcji danych i zaznaczanie wiersza listy 218Tworzenie, usuwanie i od wie anie elementów listy 222Dostosowywanie szablonu wiersza 228Grupowanie elementów i tworzenie listy nawigacyjnej 233

Rozdzia 9. Gesty i animacje 239

Wprowadzenie 239Definiowanie detektorów gestów w j zyku XAML 240Obs uga gestów za pomoc natywnych wizualizatorów 242Definiowanie uniwersalnych animacji 249

Rozdzia 10. Koniecznie przetestuj aplikacj 255

Wprowadzenie 255Definiowanie testów jednostkowych 256Definiowanie testów akceptacyjnych za pomoc platformy Xamarin.UITest 262Testowanie interfejsu u ytkownika za pomoc terminala Xamarin.UITest REPL 269Przesy anie definicji testów do us ugi Xamarin Test Cloud i ich uruchamianie 279

Poleć książkęKup książkę

Page 5: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Spis tre ci

5

Rozdzia 11. Trzy, dwa, jeden — start i kontrola 291

Wprowadzenie 291Korzystanie z us ugi Xamarin Insights 292Publikowanie aplikacji dla systemu iOS 302Publikowanie aplikacji dla systemu Android 307Publikowanie aplikacji dla Windows Phone 316

Skorowidz 321

Poleć książkęKup książkę

Page 6: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Spis tre ci

6

Poleć książkęKup książkę

Page 7: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

1

Jeden pier cie ,by rz dzi wszystkimi

W tym rozdziale opisane s nast puj ce procedury: tworzenie uniwersalnego rozwi zania tworzenie uniwersalnego ekranu logowania korzystanie ze wspólnych funkcjonalno ci systemów uwierzytelnianie u ytkowników za pomoc serwisów Facebook i Google

WprowadzenieXamarin.Forms jest platform daj c mo liwo tworzenia nie tylko wspó dzielonych modeli,algorytmów i procedur dost pu do danych, jak w tradycyjnych rozwi zaniach opartych naplatformie Xamarin, ale równie uniwersalnych interfejsów u ytkownika, wspólnych dla urz -dze z systemami iOS, Android i Windows Phone. Dzi ki Xamarin.Forms mo na szybko i atwotworzy efektowne aplikacje i narz dzia do przetwarzania danych.

Realizacja tych celów jest mo liwa, poniewa platforma Xamarin wykorzystuje supernowo-czesny j zyk C#, si bibliotek .NET Base Class Libraries (BCL) obs uguj cych natywneinterfejsy API oraz dwa doskona e rodowiska programistyczne: Xamarin Studio i MicrosoftVisual Studio. Pami taj jednak, e do tworzenia i uruchamiania aplikacji dla iOS za pomocsystemu Xamarin Build Host niezb dny jest komputer Mac pod czony do sieci i dzia aj cyjako serwer.

Ta ksi ka zawiera praktyczne przepisy, rozwi zania i instrukcje, opisuj ce krok po kroku two-rzenie profesjonalnych, uniwersalnych aplikacji. Dowiesz si z niej, jak wed ug najlepszych

Poleć książkęKup książkę

Page 8: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

20

wzorców i praktyk budowa interfejsy u ytkownika wspólne dla ró nych urz dze , dostosowy-wa warstwy i widoki oraz wstrzykiwa implementacje charakterystyczne dla poszczególnychtypów urz dze .

W tym rozdziale szczegó owo opisuj , jak tworzy si uniwersalne rozwi zanie, definiuje ekranlogowania, zapisuje dane na ró nych urz dzeniach i wykorzystuje komponent Xamarin.Authumo liwiaj cy logowanie si do aplikacji za pomoc serwisów Facebook i Google. wietnie!To jest w a nie to, co jest potrzebne do tworzenia aplikacji z prawdziwego zdarzenia.

Tworzenie uniwersalnego rozwi zaniaPierwsze kroki z platform Xamarin.Forms s bardzo proste. Program instalacyjny wszystkokonfiguruje, rodowisko IDE tworzy projekt i dzia aj ca aplikacja jest gotowa w ci gu kilkuminut! Zaczynajmy!

Przygotuj siZanim zaczniesz tworzy uniwersaln aplikacj , musisz przygotowa niezb dne narz dzia. Wy-starczy do tego celu u y tylko jednego programu instalacyjnego, pobranego ze strony Xamarin.Wykonaj nast puj ce kroki:

1. Otwórz stron http://xamarin.com/download.

Poleć książkęKup książkę

Page 9: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

21

2. Wprowad dane niezb dne do rejestracji w systemie. 3. Kliknij odno nik Download Xamarin Studio Community (pobierz rodowiskoXamarin Studio Community).

4. Po pobraniu pliku instalacyjnego uruchom go i post puj wed ug pojawiaj cych siwskazówek. W trakcie instalacji program pobierze i zainstaluje wszystkie potrzebnekomponenty.

Po zako czonej instalacji b dzie dost pne rodowisko IDE Xamarin Studio, przeznaczone dotworzenia uniwersalnych aplikacji:

Jak to zrobi ?Tworzenie rozwi zania opartego na platformie Xamarin.Forms, wykorzystuj cego szablony do-st pne w rodowiskach Xamarin Studio i Visual Studio, jest proste. W zale no ci od rodowiskadost pne s trzy (Xamarin Studio dla Windows) lub cztery (Xamarin Studio dla iOS i VisualStudio) wzorcowe projekty. Oczywi cie tworzone rozwi zanie mo esz otworzy w dowolnymrodowisku i w trakcie programowania dodawa do niego kolejne projekty. W tej cz ci rozdzia u

utworzysz rozwi zanie oparte na pustym szablonie, dost pnym w rodowisku Xamarin Studiodla iOS, a nast pnie w rodowisku Visual Studio dodasz do niego projekt dla systemu WindowsPhone.

Poleć książkęKup książkę

Page 10: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

22

Uruchom rodowisko Xamarin Studio i kliknij polecenie menu Plik/Nowe rozwi zanie. W oknie,które si pojawi, w sekcji Multiplatform kliknij opcj Aplikacja. W rodkowej cz ci okna pojawisi kilka szablonów aplikacji, jak zrzucie:

Kliknij opcj Forms App, a nast pnie przycisk Dalej. Pojawi si okno z polem App Name (nazwaaplikacji) do wpisania nazwy tworzonej aplikacji oraz polem Organization Identifier (identyfikatororganizacji) do wprowadzenia nazwy pakietu (package) w systemie Android lub paczki(bundle) w systemie iOS. Docelowy system mo esz wybra za pomoc opcji Target Platforms(docelowe systemy).

Nast pna opcja, Shareed Code (wspó dzielony kod), jest wykorzystywana w przypadku zastoso-wania w aplikacji biblioteki przeno nych klas (Portable Class Library) lub biblioteki wspó dzie-lonej (Shared Library). Wybranie opcji Shared Library powoduje utworzenie projektu wykorzy-stuj cego dyrektywy kompilacji warunkowej, w którym biblioteki s umieszczane w g ównympliku binarnym. Natomiast opcja Portable Class Library umo liwia wybór docelowego profiluaplikacji i rozpowszechnianie jej w serwisach NuGet lub Xamarin Component Store. W rozwi -zaniach opisanych w tej ksi ce stosowana jest tylko ta druga opcja wraz ze zwi zanymi z niwzorcami i praktykami.

Wybierz opcje jak na drugim zrzucie na nast pnej stronie i kliknij przycisk Dalej. W nast pnymoknie w polu Nazwa projektu wpisz tekst, który b dzie wykorzystywany do tworzenia nazwprojektów w formacie [NazwaProjektu].[System] dla poszczególnych systemów. W polu Nazwarozwi zania wpisz nazw rozwi zania, jak na kolejnym zrzucie. W polu Lokalizacja mo eszwskaza katalog, w którym zostanie zapisane rozwi zanie, a za pomoc opcji Kontrola wersjiwybra mo liwo korzystania z systemu kontroli wersji Git.

Poleć książkęKup książkę

Page 11: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

23

Poleć książkęKup książkę

Page 12: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

24

Zaznacz opcj Xamarin Test Cloud i kliknij przycisk Utwórz. Zwró uwag , e nowe rozwi zaniesk ada si z czterech projektów. W rozdziale 10., „Koniecznie przetestuj aplikacj ”, dowieszsi , jak tworzy testy rozwi zania. Ostatni projekt jest dodawany tylko wtedy, gdy rozwi zaniejest tworzone w rodowisku Xamarin Studio.

Teraz w górnej cz ci okna wybierz symulator telefonu iPhone i kliknij przycisk odtwarzania.Uruchomi si symulator, a w nim Twoja aplikacja z komunikatem Welcome to Xamarin Forms!(Witaj w Xamarin Forms!). Gratulacje! Podobn operacj mo esz wykona dla systemu Android,klikaj c prawym przyciskiem myszy projekt MojaAplikacja.droid i wybieraj c opcj Ustaw jakoprojekt startowy. Do uruchamiania projektów dla systemu Android mo esz wykorzysta symulatorGoogle Xamarin Android Player, dost pny na stronie https://xamarin.com/android-player, którymoim zdaniem jest bardziej efektywny i szybszy. Kliknij przycisk odtwarzania i zobacz ten samkomunikat w swoim ulubionym symulatorze.

wietnie! Wystarczy o kilka razy klikn , aby otrzyma aplikacj dla systemów iOS i Android!Zanim dok adniej poznasz struktur projektu, przejd do rodowiska Visual Studio i dodaj dorozwi zania projekt Windows Phone. Wykonaj w tym celu nast puj ce czynno ci:

1. Otwórz rodowisko Visual Studio, kliknij opcj menu File/Open/Project/Solution(plik/otwórz/projekt/rozwi zanie) i wybierz plik rozwi zania, w tym przypadkuMojaAplikacja.sln.

2. W panelu Solution Explorer (eksplorator rozwi zania) kliknij prawym przyciskiemmyszy nazw rozwi zania i z podr cznego menu wybierz Add/New Project(dodaj/nowy projekt).

3. W panelu po lewej stronie kliknij sekcj Visual C#/Windows/Windows 8/WindowsPhone, w rodkowej cz ci kliknij pozycj Blank App (Windows Phone Silverlight),a nast pnie w polu Name (nazwa) wpisz nazw projektu. Aby zachowa przyj tkonwencj nazw, wpisz MojaAplikacja.WinPhone i kliknij przycisk OK(zobacz zrzut na nast pnej stronie).

4. W nast pnym oknie, które si pojawi, wybierz opcj Windows Phone 8.0lub Windows Phone 8.1.Voilà! Do rozwi zania doda e projekt dla kolejnego urz dzenia. Jednak brakujew nim kilku elementów, warunkuj cych korzystanie z platformy Xamarin.Forms.Musisz jeszcze doda niezb dne pakiety i biblioteki oraz dokona niewielkichmodyfikacji w kodzie startowym aplikacji.

Poleć książkęKup książkę

Page 13: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

25

5. Kliknij prawym przyciskiem myszy nazw utworzonego przed chwil projektuMojaAplikacja.WinPhone i wybierz polecenie Manage NuGet Packages (zarz dzajpakietami NuGet).

6. Kliknij odno nik Browse (przegl daj), w polu wyszukiwania wpisz xamarin.forms.Na li cie znalezionych pakietów kliknij Xamarin.Forms, a nast pnie przycisk Install(zainstaluj), aby doda pakiet do projektu (zobacz pierwszy zrzut na nast pnejstronie).

7. Do projektu musisz jeszcze doda odwo anie do biblioteki PCL. W tym celu kliknijprawym przyciskiem myszy sekcj MojaAplikacja.WinPhone/References i wybierzpolecenie Add Reference (dodaj odwo anie). W panelu po lewej stronie kliknij sekcjProjects/Solution (projekty/rozwi zania). W rodkowym panelu zaznacz pole wyboruw wierszu MojaAplikacja (zobacz drugi zrzut na nast pnej stronie).Analogicznie kliknij sekcj Assemblies/Extensions (modu y/rozszerzenia) i zaznaczmodu System.Windows.Interactivity. Na koniec kliknij OK.

8. Prawie gotowe. Teraz musisz jeszcze wprowadzi zmiany w pliku XAML g ównejstrony, aby przekszta ci projekt w aplikacj opart na Xamarin.Forms. Kliknijdwukrotnie plik MojaAplikacja.WinPhone/MainPage.xaml i zmie znacznikphone:PhoneApplicationPage na phone:FormsApplicationPage, jak na nast pnymzrzucie.

Poleć książkęKup książkę

Page 14: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

26

Poleć książkęKup książkę

Page 15: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

27

9. Oprócz tego musisz jeszcze zmieni przestrze nazw (nie jest to jednak konieczne,je eli korzystasz z jakiego pomys owego narz dzia, na przyk ad ReSharper, którewykona t operacj za Ciebie). Odszukaj wiersz rozpoczynaj cy si od xmlns:phonei zast p go poni szym kodem. Upewnij si , e listing po zmianach wygl da jak nazrzucie.

xmlns:phone="clr-namespace:Xamarin.Forms.Platform.WinPhone;assembly=Xamarin.Forms.Platform.WP8"

10. Teraz otwórz plik MainPage.xaml.cs i zmie w nim odwo anie do klasy rodzicielskiejPhoneApplicationPage na FormsApplicationPage. Oprócz tego usu wszystkieistniej ce instrukcje using i wpisz dwie inne, jak na nast pnym zrzucie. Na koniecdopisz kod pokazany w wierszach 10 i 11:

11. Kliknij prawym przyciskiem myszy projekt MojaAplikacja.WinPhone, wybierzopcj Set as Start Up Project (ustaw jako projekt startowy), a nast pnie naci nijklawisz F5 lub kliknij opcj menu Debug/Start Debugging (debugowanie/rozpocznijdebugowanie).

Poleć książkęKup książkę

Page 16: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

28

Gratulacje! Utworzy e rozwi zanie z o one z trzech projektów, przeznaczonych dla poszcze-gólnych systemów (iOS, Android i Windows Phone), oraz z biblioteki PCL. Pami taj, e projektdla Windows Phone jest aktywny tylko w rodowisku Visual Studio.

Jak to dzia a?Utworzy e wi c trzy klasyczne natywne aplikacje, jak równie wspó dzielony kod. wietnie!

Przyjrzyj si temu oto schematowi architektury platformy Xamarin.Forms, odzwierciedlaj -cemu utworzon w a nie aplikacj :

Na najwy szym poziomie architektury widniej trzy projekty charakterystyczne dla poszczegól-nych systemów. Poni ej znajduje si poziom wspó dzielonego kodu C# interfejsu u ytkownika,a pod nim warstwa wspó dzielonego kodu C# aplikacji.

U ywaj c platformy Xamarin.Forms, interfejs u ytkownika wykorzystuj cy wspó dzielone kon-trolki, wy wietlany przez natywne mechanizmy, w poszczególnych systemach definiuje sitylko raz. W ka dym systemie zawarty jest natywny mechanizm wy wietlaj cy ka d wspó dzielo-n kontrolk . Gdy umie cisz w interfejsie etykiet (Label), wtedy mechanizm dost pny w iOSprzekszta ci j w kontrolk UILabel, w Androidzie w TextView, a w Windows Phone w TextBlock.

Rozwi g ówny projekt MojaAplikacja (Portable), a nast pnie References. Na li cie znajdzieszmi dzy innymi dwie biblioteki: Xamarin.Forms.Core i Xamarin.Forms.Xaml. Pierwsza zawiera kodg ównego algorytmu platformy Xamarin.Forms, a druga s u y do przetwarzania kodu XAML,szczegó owo opisanego w rozdziale 2., „Raz deklaruj, wsz dzie wizualizuj”.

Teraz przejrzyj projekty dla poszczególnych systemów. Najpierw zajmij si Androidem. Rozwisekcj MojaAplikacja.Droid/References. Znajdziesz w niej mi dzy innymi wspomniane wcze niejbiblioteki Xamarin.Forms.Core i Xamarin.Forms.Xaml oraz dodatkowo Xamarin.Forms.Platform.Android. Ta ostatnia jest bibliotek charakterystyczn dla systemu Android. Zdefiniowane s w niejwszystkie mechanizmy wy wietlaj ce tre na ekranie. Jej zadaniem jest kojarzenie ogólnychklas interfejsu u ytkownika z klasami typowymi dla Androida.

Ta sama zasada obowi zuje w projekcie na iOS. Charakterystyczna dla niego biblioteka nosinazw Xamarin.Forms.Platform.iOS.

Poleć książkęKup książkę

Page 17: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

29

W ka dym projekcie w li cie bibliotek znajduje si równie odwo anie do g ównego projektudefiniuj cego bibliotek PCL, bo bez g ównego kodu aplikacja nie b dzie dzia a , prawda?

Wszystko wygl da wietnie, ale w jaki sposób projekty dla poszczególnych systemów s powi -zane z platform Xamarin.Forms? Aby si tego dowiedzie , musisz zajrze do kodu startowegoaplikacji, w a ciwego dla ka dego systemu.

Zacznij od projektu dla Windows Phone. Zmieni e w nim kod w pliku MainPage.xaml.cs.Interfejs u ytkownika nie jest teraz oparty na klasie PhoneApplicationPage, lecz na FormsApplica-tionPage z przestrzeni Xamarin.Forms.Platform.WinPhone. W kodzie wa ne jest wywo anie kon-struktora tej klasy, Forms.Init(), a tak e metody LoadApplication(). Argumentem tej metodyjest nowa instancja klasy Xamarin.Forms.Appplication, zdefiniowanej w bibliotece PCL.Otwórz teraz plik MojaAplikacja (Portable)/App.xaml/App.xaml.cs. Zawiera on kod startowyXamarin.Forms. Konstruktor klasy zawiera troch kodu inicjalizuj cego interfejs u ytkownika.Z nast pnej cz ci rozdzia u dowiesz si wi cej na temat tego kodu, jak równie go zmienisz.

W projekcie dla iOS w pliku AppDelegate.cs wywo ywana jest analogiczna do opisanej wy ejmetoda FinishedLaunching(). Zwró jednak uwag , e klasa AppDelegate dziedziczy cechy poklasie Xamarin.Forms.Platform.iOS.FormsApplicationDelegate.

Na koniec przyjrzyj si projektowi dla Androida. W pliku MainActivity.cs zdefiniowana jest klasaaktywno ci MainActivity, dziedzicz ca cechy po klasie Xamarin.Forms.Platform.Android.FormsApplicationActivity. G owna metoda tej klasy, OnCreate(), inicjalizuje pewne charaktery-styczne zmienne oraz klas Xamarin.Forms. Zwró uwag , e metoda Forms.Init() w tym systemiejest wywo ywana inaczej, to jest z dwoma argumentami: obiektami typu MainActivity i Bundle.

Zobacz te https://developer.xamarin.com/guides/cross-platform/xamarin-forms/controls/views

Tworzenie uniwersalnego ekranulogowaniaW niemal ka dej aplikacji jest ekran logowania. W tym przyk adzie poznasz jedn z najbardziejpodstawowych stron platformy Xamarin.Forms. Utworzysz ekran logowania, w którym u ytkow-nik b dzie wpisywa swój login i has o, a nast pnie klika przycisk, aby uzyska dost p do aplikacji.

Mo esz utworzy nowe lub kontynuowa prac nad aktualnym rozwi zaniem.

Poleć książkęKup książkę

Page 18: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

30

Jak to zrobi ?W rodowisku Xamarin Studio rozwi g ówny projekt MojaAplikacja i wykonaj nast puj ce kroki:

1. Otwórz plik App.xaml/App.xaml.cs i zast p kod konstruktora App() poni szym kodem:

var userNameEntry = new Entry { Placeholder = "login"};

var passwordEntry = new Entry { Placeholder = "has o", IsPassword = true};

var loginButton = new Button { Text = "Zaloguj"};

loginButton.Clicked += (sender, e) => { Debug.WriteLine(string.Format("Login: {0} - Has o: {1}", userNameEntry.Text, passwordEntry.Text));};

MainPage = new ContentPage { Content = new StackLayout { VerticalOptions = LayoutOptions.Center, Children = { userNameEntry, passwordEntry, loginButton } }};

2. Uruchom aplikacj w ka dym systemie. Na ekranie powinny pojawi si prostepola testowe i przycisk.

3. W odpowiednich polach wpisz login i has o. 4. Kliknij przycisk Zaloguj i obserwuj komunikaty wy wietlane przez aplikacj ,zdefiniowane w procedurze obs ugi zdarzenia Clicked.

Ekran powinien wygl da jak na zrzutach.

Poleć książkęKup książkę

Page 19: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

31

W systemie iOS: W systemie Android:

W systemie Windows Phone:

Poleć książkęKup książkę

Page 20: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

32

Wszystko wygl da wietnie: elementy w domy lnym uk adzie umieszczone s w rodkowejcz ci ekranu i zajmuj ca jego szeroko . Oczywi cie ka dy widok i kontener ma w a ciwo ciumo liwiaj ce dowolne rozmieszczanie kontrolek na ekranie i okre lanie odst pów pomi dzynimi. Zmie teraz nieco uk ad. Przy okazji uporz dkujesz kod. W tym celu wykonaj nast puj cekroki:

1. Kliknij prawym przyciskiem myszy g ówny projekt MojaAplikacja, nast pniewybierz polecenie Dodaj/Nowy folder i utwórz nowy folder o nazwie Custom Pages(w asne strony).

2. Kliknij prawym przyciskiem myszy nowo utworzony folder i wybierz polecenieDodaj/Nowy plik. W oknie, które si pojawi, zaznacz opcj Pusta klasa, w poluNazwa wpisz MainPage (strona g ówna) i kliknij przycisk Nowy.

3. W definicji nowej klasy wpisz nast puj cy kod:

public class MainPage: ContentPage { Entry userNameEntry; Entry passwordEntry; Button loginButton; StackLayout stackLayout;

public MainPage() { userNameEntry = new Entry { Placeholder = "login" };

passwordEntry = new Entry { Placeholder = "has o", IsPassword = true };

loginButton = new Button { Text = "Zaloguj" };

loginButton.Clicked += LoginButton_Clicked; this.Padding = new Thickness(20); stackLayout = new StackLayout { VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, Orientation = StackOrientation.Vertical, Spacing = 10, Children = { userNameEntry, passwordEntry, loginButton } };

this.Content = stackLayout; }

Poleć książkęKup książkę

Page 21: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

33

void LoginButton_Clicked(object sender, EventArgs e) { Debug.WriteLine(string.Format("Login: {0} - Has o: {1}", userNameEntry.Text, passwordEntry.Text)); }}

4. Na pocz tku pliku wpisz nast puj cy wiersz:

using Xamarin.Forms;

5. W pliku App.xaml/App.xaml.cs usu wpisany wcze niej kod i wpisz w jego miejscunast puj cy wiersz:

MainPage = new MainPage();

6. Uruchom aplikacj dla ka dego systemu i sprawd efekty wprowadzonych zmian.

Ekran powinien wygl da jak na zrzutach.

W systemie iOS: W systemie Android:

Poleć książkęKup książkę

Page 22: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

34

W systemie Windows Phone:

Jak to dzia a?Plik App.xaml.cs zawiera g ówny kod startowy aplikacji. Definiowana w nim klasa ma w a ciwoMainPage, której przypisywany jest obiekt tworz cy stron startow aplikacji.

W a ciwo ci Content (zawarto ) klasy MainPage jest przypisywany obiekt typu StackLayout(uk ad pionowy). W jego w a ciwo ci Children (dzieci) umieszczane s trzy widoki: userNameEntry(pole do wpisania loginu), passwordEntry (pole do wpisania has a) i loginButton (przycisk logo-wania). Dodatkowo w a ciwo ciom VerticalOptions (opcje uk adu pionowego), HorizontalOptions(opcje uk adu poziomego), Orientation (orientacja) i Spacing (odst py) przypisywane s odpo-wiednie warto ci.

W a ciwo ci Clicked (klikni ty) obiektu loginButton zosta a przypisana procedura obs ugizdarzenia wywo anego klikni ciem przycisku logowania. W tej chwili procedura ta nie wykonujeadnych operacji oprócz wy wietlania komunikatów w panelu Dane wyj ciowe aplikacji.

Poleć książkęKup książkę

Page 23: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

35

W utworzonym interfejsie u ytkownika wykorzystany jest adaptywny uk ad elementów, dost pnyw platformie Xamarin.Forms. Nie trzeba okre la po o enia poszczególnych kontrolek, wystarczyzdefiniowa kontenery, umie ci w nich elementy potomne i zdefiniowa regu y ich rozmieszcze-nia na ekranie.

Aby nada ekranowi logowania ostateczny wygl d, zosta y zmienione w a ciwo ci VerticalOptionsi HorizontalOptions kontenera StackLayout, definiuj ce rozmieszczenie kontrolek na ekranie,oraz w a ciwo Spacing, okre laj ca odst py pomi dzy kontrolkami i marginesy wokó nich.

W platformie Xamarin.FormsNie nie istnieje prosty sposób okre lania wysoko ci i szeroko ci elementów.Definiuj c widok, okre la si wymagania dotycz ce ich wymiarów bez gwarancji, e zostan one spe nione.W a ciwo ci Width (szeroko ) i Height (wysoko ) s tylko do odczytu.

Co dalej?Tworz c uniwersalne aplikacje, na przyk ad oparte na platformie Xamarin.Forms, nie zapominaj,e u ytkownicy korzystaj z wielu ró nych urz dze o ró nych wielko ciach ekranów, a w po-

szczególnych systemach stosowane s inne jednostki wymiarów elementów. W iOS s to unity,a w Androidzie i Windows Phone tak zwane piksele niezale ne od urz dzenia (dpi).

Jak sobie z tym radzi Xamarin.Forms? Je eli na przyk ad w a ciwo ci Spacing zostanie przypisanawarto 10, wówczas zostanie ona prze o ona na 10 unitów w iOS i 10 dpi w Androidzie i Win-dows Phone.

Korzystanie ze wspólnych funkcjonalno cisystemówNajwi kszym wyzwaniem towarzysz cym tworzeniu uniwersalnych aplikacji jest uwzgl dnianieró nic pomi dzy interfejsami API typowymi dla poszczególnych systemów. Wiele funkcjonalno-ci jest wspólnych, ale korzystanie z nich nie zawsze jest proste. Na przyk ad wy wietlenie

okienka z komunikatem lub otwarcie strony o zadanym adresie URL jest mo liwe we wszyst-kich systemach, ale interfejsy API umo liwiaj ce wykonanie tych operacji s w poszczegól-nych urz dzeniach zupe nie inne. Ponadto biblioteka PCL nie oferuje dost pu do wszystkichfunkcjonalno ci urz dze .

Standardowo Xamarin.Forms obs uguje niektóre wspólne dla wszystkich systemów funkcjonal-no ci. W rozdziale 4., „Ró ne pojazdy, ten sam silnik”, opisana jest architektura biblioteki orazsposoby tworzenia w asnych klas, ich implementacji i wykorzystania w wykonywanym kodzie.

Poleć książkęKup książkę

Page 24: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

36

Jak to zrobi ?W tej cz ci poznasz nast puj ce interfejsy API platformy Xamarin.Forms:

Device.OpenUri do otwierania adresów URL w przegl darce danego systemu; Device.StartTimer do wykonywania zada w okre lonym momencie; Device.BeginInvokeOnMainThread do uruchamiania kodu, zazwyczaj w tle systemu,

w celu zmiany zawarto ci ekranu; Page.DisplayAlert do wy wietlania prostych okien z komunikatami; Xamarin.Forms.Maps do wy wietlania map (ta funkcjonalno jest zawarta

w uniwersalnym pakiecie NuGet).

Aby dowiedzie si , jak korzysta z powy szych interfejsów, utwórz now aplikacj . W tym celuwykonaj nast puj ce kroki:

1. Utwórz od podstaw w opisany wcze niej sposób nowy projekt oparty nadomy lnym szablonie i nadaj mu nazw CommonPlatform.

2. Utwórz nowy folder, a w nim now klas o nazwie MainPage. 3. W definicji przestrzeni wpisz nast puj cy kod:

public class MainPage: ContentPage { private Button openUriButton; private Button startTimerButton; private Button marshalUIThreadButton; private Button displayAlertButton; private Button displayActionSheetButton; private Button openMapButton; private StackLayout stackLayout;

public MainPage() { openUriButton = new Button { Text = "Otwórz Xamarin Evolve" }; startTimerButton = new Button { Text = "Uruchom stoper" }; marshalUIThreadButton = new Button { Text = "Uruchom w g ównym w tku" }; displayAlertButton = new Button { Text = "Wy wietl komunikat" }; displayActionSheetButton = new Button { Text = "Wy wietl list akcji" }; openMapButton = new Button { Text = "Otwórz map " };

Poleć książkęKup książkę

Page 25: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

37

openUriButton.Clicked += OpenUriButton_Clicked; startTimerButton.Clicked += StartTimerButton_Clicked; marshalUIThreadButton.Clicked += MarshalUIThreadButton_Clicked; displayAlertButton.Clicked += DisplayAlertButton_Clicked; displayActionSheetButton.Clicked += DisplayActionSheetButton_Clicked; openMapButton.Clicked += OpenMapButton_Clicked;

stackLayout = new StackLayout { Orientation = StackOrientation.Vertical, Spacing = 10, Padding = new Thickness(10), VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, Children = { openUriButton, startTimerButton, marshalUIThreadButton, displayAlertButton, displayActionSheetButton, openMapButton } }; Content = stackLayout; }

void OpenMapButton_Clicked(object sender, EventArgs e) { }

async void DisplayActionSheetButton_Clicked(object sender, EventArgs e) { string action = await DisplayActionSheet("Prosta lista akcji", "Anuluj", "Usu ", new string[] { "Akcja 1", "Akcja 2", "Akcja 3", }); Debug.WriteLine("Klikn e {0}", action); }

async void DisplayAlertButton_Clicked(object sender, EventArgs e) { bool result = await DisplayAlert("Prosty komunikat", "Super!", "OK", "Anuluj"); Debug.WriteLine("Klikni ty przycisk: {0}", result ? "OK" : "Anuluj"); }

void MarshalUIThreadButton_Clicked(object sender, EventArgs e) { Task.Run(async() => { for (int i = 0; i < 3; i++) { await Task.Delay(1000); Device.BeginInvokeOnMainThread(() => { marshalUIThreadButton.Text = string.Format("Wywo any {0}", i); }); } }); }

Poleć książkęKup książkę

Page 26: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

38

void StartTimerButton_Clicked(object sender, EventArgs e) { Device.StartTimer(new TimeSpan(0, 0, 1), () => { Debug.WriteLine("Wywo any delegat stopera"); return true; // false, je eli stoper ma by zatrzymany }); }

void OpenUriButton_Clicked(object sender, EventArgs e) { Device.OpenUri(new Uri("http://xamarin.com/evolve")); }}

4. Na razie nie zwracaj uwagi na pust metod OpenMapButton_Clicked(). Aby móc z niejkorzysta , za chwil zmienisz nieco konfiguracj rozwi zania.

5. Uruchom aplikacj i sprawd funkcjonowanie wszystkich przycisków z wyj tkiemOtwórz map , z którym na razie nie jest zwi zana adna funkcjonalno .

Ekran powinien wygl da jak na zrzutach.

W systemie iOS: W systemie Android:

Poleć książkęKup książkę

Page 27: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

39

W systemie Windows Phone:

Aby móc wy wietla mapy w aplikacji, musisz w konfiguracji rozwi zania wprowadzi kilka zmian,odpowiednich dla poszczególnych urz dze . Wykonaj poni sze kroki:

1. Do ka dego projektu dodaj pakiet NuGet o nazwie Xamarin.Forms.Maps. 2. W projekcie dla Windows Phone w pliku MainPage.xaml/MainPage.xaml.cs wpiszpod wywo aniem metody Forms.Init() poni szy kod. Analogiczn zmian wprowadw projekcie dla Androida w pliku MainActivity.cs i w projekcie dla iOS w plikuAppDelegate.cs.

Xamarin.FormsMaps.Init();

3. W projekcie dla Androida zmie powy szy kod, wpisuj c wymagane argumentymetody:

Xamarin.FormsMaps.Init(this, bundle);

Poleć książkęKup książkę

Page 28: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

40

4. Je eli tworzysz aplikacj dla systemu iOS 7, nie musisz wprowadza adnychdodatkowych zmian. Natomiast w przypadku systemu iOS 8 musisz zmieni plikinfo.plist. Otwórz ten plik, kliknij zak adk ród o i dodaj do tabeli nast puj cewiersze:

NSLocationAlwaysUsageDescription Ci g Zawsze musimy zna Twoje po o enie!

NSLocationWhenInUseUsageDescription Ci g Musimy zna Twoje po o enie, gdy aplikacja jest aktywna!

5. Aby wy wietla mapy w Androidzie, musisz uzyska klucz Google Maps API v2.W tym celu otwórz stron https://developers.google.com/maps/documentation/android,kliknij przycisk Get a key (uzyskaj klucz) i post puj wed ug pojawiaj cych siwskazówek.

6. Otwórz plik Properties/AndroidManifest.xml, wy wietl jego ród o i w sekcji<application> wpisz nast puj cy wiersz:

<meta-data android:name="com.google.android.maps.v2.API_KEY"android:value="TWÓJ KLUCZ" />

7. Kliknij prawym przyciskiem myszy projekt dla Androida i wybierz polecenie Opcje.W oknie, które si pojawi, kliknij po lewej stronie pozycj Kompilacja/AndroidApplication i w panelu Wymagane uprawnienia zaznacz nast puj ce opcje:

Internet

AccessNetworkState

AccessCoarseLocation

AccessFineLocation

AccessLocationExtraCommands

AccessMockLocation

AccessWifiState

8. W projekcie dla Windows Phone otwórz plik Properties/WMAppmanifest.xml,kliknij zak adk Capabilities (mo liwo ci) i zaznacz nast puj ce opcje:

ID_CAP_MAP

ID_CAP_LOCATION

9. Dodaj do rozwi zania now stron . W tym celu kliknij prawym przyciskiem folderCustom Pages, wybierz polecenie Dodaj/Nowy plik i utwórz pust klas o nazwieMapPage.

10. Zmie klas MapPage, definiuj c j jako pochodn klasy ContentPage. 11. W definicji klasy wpisz nast puj cy kod:

private Map map;private StackLayout stackLayout;public MapPage() {

Poleć książkęKup książkę

Page 29: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

41

MapSpan span = MapSpan.FromCenterAndRadius( new Position(50.289192, 18.659656), Distance.FromMiles(0.4));

map = new Map(span) { VerticalOptions = LayoutOptions.FillAndExpand };

stackLayout = new StackLayout { Spacing = 0, Children = { map } }; Content = stackLayout;}

12. W pliku MainPage.cs w definicji metody OpenMapButton_Clicked() wpisznast puj cy kod:

Navigation.PushModalAsync(new MapPage());

13. Uruchom aplikacje, kliknij przycisk Otwórz map i podziwiaj swoj prac !

Mo esz zmienia typ mapy, jak równie umieszcza na niej znaczniki. Dost pne s nast puj cerodzaje znaczników:

Generic (ogólny) Place (miejsce) SavedPin (zapisany znacznik) SearchResult (wynik wyszukiwania)

Aby umie ci znacznik na mapie, wpisz w konstruktorze klasy MapPage nast puj cy kod:

Position position = new Position(50.289192, 18.659656);Pin pin = new Pin { Type = PinType.Place, Position = position, Label = "Helion", Address = "Helion"};map.Pins.Add(pin);

Bardzo proste! Twórcy platformy Xamarin wykonali dobr robot , definiuj c klasy umo liwiaj -ce wykonywanie podstawowych operacji na mapach.

Ekran powinien wygl da jak na zrzutach.

Poleć książkęKup książkę

Page 30: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

42

W systemie iOS: W systemie Android:

W systemie Windows Phone:

Poleć książkęKup książkę

Page 31: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

43

Jak to dzia a?Platforma Xamarin zawiera klasy, które mo na stosowa we wspó dzielonej bibliotece PCL,jak równie w projektach dla poszczególnych systemów. Mechanizm Service Locator, b d cycz ci us ugi DependencyService (któr zajmiemy si w rozdziale 4., „Ró ne pojazdy, ten samsilnik”), rozwi zuje zale no ci w trakcie dzia ania aplikacji, dzi ki czemu szybko mo na tworzyaplikacje wykorzystuj ce najcz ciej stosowane funkcjonalno ci.

Metoda DisplayAlert() wstrzykuje w trakcie dzia ania aplikacji kod klasy UIAlertControllerw iOS, kod klasy AlertDialog w Androidzie oraz kod klasy MessageBox w Windows Phone.Metoda Device.StartTimer() ukrywa szczegó y odpowiednich klas, charakterystycznych dla po-szczególnych systemów.

Ta sama zasada jest stosowana we wszystkich opisanych wcze niej metodach, a tak e w meto-dach pakietu Xamarin.Forms.Maps, jednak w ostatnim przypadku wymagane jest wprowadzeniepewnych zmian w konfiguracjach projektów.

Platformy Xamarin, a szczególnie Xamarin.Forms, powsta y po to, aby mo na by o efektywniej tworzyaplikacje. Temu celowi s u wtyczki Xamarin i Community. Zanim zaczniesz kodowa , sprawdzaj ichzawarto , aby nie wywa a otwartych drzwi!

Zobacz te Rozdzia 4., „Ró ne pojazdy, ten sam silnik” https://developer.xamarin.com/guides/xamarin-forms/user-interface/controls/layouts https://components.xamarin.com

Uwierzytelnianie u ytkownikówza pomoc serwisów Facebook i GoogleJedn z najcz ciej wykorzystywanych w aplikacjach funkcjonalno ci jest uwierzytelnianieu ytkownika za pomoc jego ulubionego serwisu. Ostatnim tematem tego rozdzia u jest imple-mentacja tej funkcjonalno ci z u yciem wtyczki Xamarin.Auth. Wtyczka ta umo liwia po czeniesi aplikacji i uwierzytelnienie u ytkownika poprzez jeden z dwóch popularnych serwisów —Facebook lub Google — dzi ki czemu u ytkownik nie musi rejestrowa si w aplikacji. Ponadtoprogramista oszcz dza sobie dodatkowej pracy zwi zanej z implementacj procedury logowaniana urz dzeniu i serwerze.

Poleć książkęKup książkę

Page 32: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

44

Jak to zrobi ? 1. Utwórz w rodowisku Xamarin Studio lub Visual Studio nowe uniwersalnerozwi zanie o nazwie AuthenticateProviders. Je eli nie pami tasz, jak to si robi,zajrzyj do cz ci „Tworzenie uniwersalnego rozwi zania” na pocz tku tego rozdzia u.

2. Do projektów dla systemów iOS i Android (projektem dla Windows Phone na raziesi nie zajmujemy) dodaj komponent uwierzytelniaj cy. W tym celu kliknij prawymprzyciskiem myszy folder AuthenticateProviders.iOS/Sk adniki i wybierz polecenieEdytuj sk adniki. W oknie, które si pojawi, wyszukaj komponent Xamarin.Authi dodaj go do projektu. T sam operacj wykonaj w przypadku projektu dla Androida.

3. Aby mo na by o uwierzytelnia u ytkowników za pomoc serwisów Facebook i Google,musisz w sekcjach deweloperskich obu serwisów uzyska w asne identyfikatoryklienckie. W tym celu otwórz strony https://developers.facebook.com orazhttps://console.developers.google.com i post puj wed ug znajduj cych si na nichwskazówek.

4. Proces uwierzytelniania u ytkownika w obu serwisach i w obu systemach wygl daniemal tak samo: tworzony jest nowy projekt i uzyskiwane s klucze. Wi cej informacjina ten temat znajdziesz w opisach poszczególnych systemów. Najwa niejsz kwestijest zdefiniowanie takiego samego przekierowuj cego adresu URL, aby aplikacjapo pomy lnym uwierzytelnieniu u ytkownika otwiera a odpowiedni stron .

5. Kliknij prawym przyciskiem myszy g ówny projekt AuthenticateProviders, wybierzpolecenie Dodaj/Nowy folder i utwórz folder o nazwie Models.

6. W nowo utworzonym folderze utwórz dwie klasy pomocnicze o nazwachOAuthSettings i ProviderManager.

7. W pliku OAuthSettings.cs wpisz nast puj cy kod:

public class OAuthSettings { public string ClientId { get; set; } public string ClientSecret { get; set; } public string AuthorizeUrl { get; set; } public string RedirectUrl { get; set; } public string AccessTokenUrl { get; set;

Poleć książkęKup książkę

Page 33: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

45

} public List<string> Scopes { get; set; } public string ScopesString { get { return Scopes.Aggregate((current, next) => string.Format("{0}+{1}", current, next)); } } public OAuthSettings() { Scopes = new List<string>(); }}

8. W pliku ProviderManager.cs wpisz nast puj cy kod:

public enum Provider { Unknown = 0, Facebook, Google}

public static class ProviderManager { private static OAuthSettings FacebookOAuthSettings { get { return new OAuthSettings { ClientId = "TWÓJ_ID_KLIENCKI", ClientSecret = "TWOJE_HAS O_KLIENCKIE", AuthorizeUrl = "https://m.facebook.com/dialog/oauth/", RedirectUrl = "http://www.facebook.com/connect/login_success.html", AccessTokenUrl = "https://graph.facebook.com/v2.3/oauth/access_token", Scopes = new List<string> { "" } }; } } private static OAuthSettings GoogleOAuthSettings { get { return new OAuthSettings { ClientId = "TWÓJ_ID_KLIENCKI", ClientSecret = "TWOJE_HAS O_KLIENCKIE", AuthorizeUrl = "https://accounts.google.com/o/oauth2/auth", RedirectUrl = "https://www.googleapis.com/plus/v1/people/me", AccessTokenUrl = "https://accounts.google.com/o/oauth2/token", Scopes = new List<string> { "openid" } }; } }

Poleć książkęKup książkę

Page 34: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

46

public static OAuthSettings GetProviderOAuthSettings(Provider provider) { switch (provider) { case Provider.Facebook: { return FacebookOAuthSettings; } case Provider.Google: { return GoogleOAuthSettings; } } return new OAuthSettings(); }}

9. Kliknij prawym przyciskiem myszy projekt AuthenticateProviders, wybierzpolecenie Dodaj/Nowy folder i utwórz folder o nazwie Custom Pages.

10. Kliknij prawym przyciskiem myszy nowo utworzony folder i utwórz w nim dwieklasy o nazwach LoginPage i ProvidersAuthPage. W pliku LoginPage.cs wpisznast puj cy kod:

public class LoginPage : ContentPage { public OAuthSettings ProviderOAuthSettings { get; set; } public LoginPage(Provider provider) { ProviderOAuthSettings = ProviderManager.GetProviderOAuthSettings(provider); }}

11. W pliku ProvidersAuthPage.cs wpisz nast puj cy kod:

public class ProvidersAuthPage : ContentPage { StackLayout stackLayout; Button facebookButton; Button googleButton; public ProvidersAuthPage() { facebookButton = new Button { Text = "Facebook" }; facebookButton.Clicked += async(sender, e) => await Navigation.PushModalAsync(new LoginPage(Provider.Facebook)); googleButton = new Button { Text = "Google" }; googleButton.Clicked += async(sender, e) => await Navigation.PushModalAsync(new LoginPage(Provider.Google)); stackLayout = new StackLayout { VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, Orientation = StackOrientation.Vertical, Spacing = 10, Children = { facebookButton,

Poleć książkęKup książkę

Page 35: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

47

googleButton } }; this.Content = stackLayout; }}

12. W projekcie AuthenticateProviders w pliku App.xaml/App.xaml wpiszw konstruktorze klasy nast puj cy kod:

MainPage = new ProvidersAuthPage();

Teraz musisz zakodowa proces uwierzytelniania u ytkownika. W punkcie 3. doda e do dwóchprojektów komponent Xamarin.Auth, który w zale no ci od systemu wykorzystuje si inaczej.Aby w ró nych systemach by wykonywany inny kod, zastosujesz klas PageRenderer i atrybutprzestrzeni, dzi ki którym wykorzystana zostanie us uga DependencyService oferowana przezplatform Xamarin.Forms. Wi cej informacji na ten temat znajdziesz w rozdziale 2., „Raz deklaruj,wsz dzie wizualizuj”.

W projekcie dla systemu Android wykonaj nast puj ce operacje: 1. Utwórz nowy folder o nazwie Platform Specific, a w nim now klas LoginPageRenderer,dziedzicz c w a ciwo ci klasy PageRenderer. W definicji klasy wpisz nast puj cy kod:

LoginPage page;bool loginInProgress;

protected override void OnElementChanged(ElementChangedEventArgs<Page> e) { base.OnElementChanged(e); if (e.OldElement != null || Element == null) return; page = e.NewElement as LoginPage; if (page == null || loginInProgress) return; loginInProgress = true; try { // Twój identyfikator kliencki OAuth2 OAuth2Authenticator auth = new OAuth2Authenticator( page.ProviderOAuthSettings.ClientId, // Twoje has o klienckie OAuth2 page.ProviderOAuthSettings.ClientSecret, // Zakresy page.ProviderOAuthSettings.ScopesString, // Zakresy rozdzielone znakiem "+" new Uri(page.ProviderOAuthSettings.AuthorizeUrl), // Przekierowuj cy adres URL new Uri(page.ProviderOAuthSettings.RedirectUrl), new Uri(page.ProviderOAuthSettings.AccessTokenUrl) ); auth.AllowCancel = true; auth.Completed += async(sender, args) => { // Wykonywane operacje await page.Navigation.PopAsync();

Poleć książkęKup książkę

Page 36: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

48

loginInProgress = false; }; auth.Error += (sender, args) => { Console.WriteLine("B d uwierzytelnienia: {0}", args.Exception); }; var activity = Xamarin.Forms.Forms.Context as Activity; activity.StartActivity(auth.GetUI(Xamarin.Forms.Forms.Context)); } catch (Exception ex) { Console.WriteLine(ex); }}

2. Wpisz poni sze instrukcje i atrybuty dekoracyjne przestrzeni nazw, aby kodpoprawnie si skompilowa :

using XamFormsAuthenticateProviders;using XamFormsAuthenticateProviders.Droid;using Xamarin.Forms.Platform.Android;using Xamarin.Auth;[assembly: ExportRenderer(typeof(LoginPage), typeof(LoginPageRenderer))]namespace AuthenticateProviders.Droid

W projekcie dla systemu iOS wykonaj nast puj ce operacje: 1. Jak poprzednio, utwórz nowy folder Platform Specific, a w nim klasLoginPageRenderer pochodn od klasy PageRenderer.

2. W definicji klasy wpisz nast puj cy kod, odpowiedni dla iOS:

LoginPage page;bool loginInProgress;

protected override void OnElementChanged(VisualElementChangedEventArgs e) { base.OnElementChanged(e); if (e.OldElement != null || Element == null) return; page = e.NewElement as LoginPage;}

public override async void ViewDidAppear(bool animated) { base.ViewDidAppear(animated); if (page == null || loginInProgress) return; loginInProgress = true; try { // Twój identyfikator kliencki OAuth2 OAuth2Authenticator auth = new OAuth2Authenticator( page.ProviderOAuthSettings.ClientId, // Twoje has o klienckie OAuth2 page.ProviderOAuthSettings.ClientSecret, // Zakresy page.ProviderOAuthSettings.ScopesString, // Zakresy rozdzielone znakiem "+" new Uri(page.ProviderOAuthSettings.AuthorizeUrl),

Poleć książkęKup książkę

Page 37: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

49

// Przekierowuj cy adres URL new Uri(page.ProviderOAuthSettings.RedirectUrl), new Uri(page.ProviderOAuthSettings.AccessTokenUrl) ); auth.AllowCancel = true; auth.Completed += async(sender, args) => { // Wykonywane operacje await DismissViewControllerAsync(true); await page.Navigation.PopModalAsync(); loginInProgress = false; }; auth.Error += (sender, args) => { Console.WriteLine("B d uwierzytelnienia: {0}", args.Exception); }; await PresentViewControllerAsync(auth.GetUI(), true); } catch (Exception ex) { Console.WriteLine(ex); }}

3. Wpisz jeszcze poni sze instrukcje i atrybut ExportRenderer przestrzeni nazw:

using System;using Xamarin.Forms;using Xamarin.Forms.Platform.iOS;using Xamarin.Auth;using AuthenticateProviders;using AuthenticateProviders.iOS;

[assembly: ExportRenderer(typeof(LoginPage), typeof(LoginPageRenderer))]namespace AuthenticateProviders.iOS

A co z pomini tym Windows Phone? Na pewno zauwa y e , e w serwisie Xamarin ComponentStore nie ma komponentu uwierzytelniaj cego przeznaczonego dla tego systemu. Nie przejmujsi tym jednak, istniej inne mo liwo ci. Jeden z magicznych sposobów polega na wykorzysta-niu klasy PageRenderer, zastosowanej w dwóch poprzednich projektach. W projekcie dla systemuWindows Phone utwórz w opisany wy ej sposób klas i wpisz w asny kod uwierzytelniaj cy.Mo esz równie wykona nast puj ce operacje i wypróbowa eksperymentalny pakiet NuGetXamarin.Auth:

1. Kliknij prawym przyciskiem myszy projekt dla systemu Windows Phone i dodajdo niego pakiet NuGet Xamarin.Auth.

2. Utwórz folder Platform Specific, a w nim klas LoginPageRenderer pochodn od klasyPageRenderer.

3. W definicji klasy zaimplementuj w asny algorytm uwierzytelniaj cy lub wykorzystajpakiet Xamarin.Auth.

Aby utworzy gotow aplikacj , skorzystaj z do czonego do ksi ki kodu.

Poleć książkęKup książkę

Page 38: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

50

Poczyni e du e post py. Oczywi cie w tym rozwi zaniu zosta wykorzystany zaledwie drobnyfragment mo liwo ci tokenów uwierzytelniaj cych, ale ten temat zostawiam Tobie. Zazwyczajproces uwierzytelnienia polega na uzyskaniu tokenu, zarejestrowaniu jego daty wyga ni ciai zapisaniu go w pami ci.

Jak to dzia a?Pozna e zatem pot g platformy Xamarin.Forms, umo liwiaj c tworzenie uniwersalnych apli-kacji wykorzystuj cych wspó dzielony kod, który mo na dostosowywa odpowiednio do potrzeb.Dzi ki klasie PageRenderer mo na wy wietla widoki i strony w sposób odpowiedni dla ró nychsystemów operacyjnych.

Pierwsz rzecz , jak zrobi e po utworzeniu rozwi zania, by o zalogowanie si do konsolideweloperskiej serwisów Facebook i Google w celu utworzenia nowego projektu, uaktywnieniamechanizmu uwierzytelniaj cego OAuth2 oraz uzyskania kluczy i przekierowuj cych adresów URLstron otwieranych po pomy lnym zalogowaniu u ytkownika. Mechanizmy OAuth i OAuth2 s udo sprawdzania, czy loguj cy si u ytkownik jest zarejestrowany w bazie serwisu uwierzytel-niaj cego. Dzi ki temu u ytkownik w celu zalogowania si do aplikacji mo e u ywa tych samychpo wiadcze , które stosuje do logowania si do serwisu.

Kolejn operacj by o utworzenie dwóch klas pomocniczych. Pierwsza z nich, OAuthSettings,zawiera wszystkie ustawienia wymagane przez serwis uwierzytelniaj cy do otwarcia dost pudo aplikacji. Druga, statyczna klasa ProviderManager, zawiera statyczn metod , której argumentemjest identyfikator serwisu uwierzytelniaj cego. Metoda ta zwraca instancj klasy OAuthSettingsodpowiedni dla wskazanego serwisu.

Uniwersalny interfejs u ytkownika sk ada si z dwóch stron. Pierwsza to strona g ówna,ProvidersAuthPage, która zawiera dwa przyciski. Po klikni ciu dowolnego z tych przyciskówwywo ywana jest metoda obs ugi zdarzenia Clicked i nast puje przej cie do strony LoginPage,uwierzytelniaj cej u ytkownika za pomoc wybranego serwisu.

W konstruktorze klasy LoginPage argument provider jest wykorzystywany do uzyskania odpo-wiedniej instancji klasy OAuthSettings i zapisania jej w publicznej w a ciwo ci. To wszystko.Ca a reszta jest wykonywana przez kod przystosowany do w a ciwego systemu operacyjnego.

Kody klasy LoginPageRenderer s dostosowane do poszczególnych systemów i wykorzystujfunkcjonalno ci platformy Xamarin.Forms. W iOS jest to klasa UIViewController, w Androidzieklasa bardzo podobna do klasy Activity, a w Windows Phone klasa PhoneApplicationPage.W platformie dost pnych jest kilka innych klas do wy wietlania ró nego typu widoków.

Przestrze nazw, w której zdefiniowa e powy sz klas , opatrzy e atrybutem ExportRenderer,dzi ki któremu platforma Xamarin.Forms podczas dzia ania aplikacji aduje do pami ci odpo-wiedni kod.

Poleć książkęKup książkę

Page 39: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Rozdzia 1. • Jeden pier cie , by rz dzi wszystkimi

51

W klasie LoginPageRenderer nadpisywana jest metoda OnElementChanged() i uzyskiwana stronaplatformy Xamarin.Forms. W iOS wykorzystywana jest w tym celu metoda ViewDidAppear().Jednak w Androidzie nie istnieje analogiczna metoda, dlatego w metodzie OnElementChanged()wpisa e w asny kod uwierzytelniaj cy. Kod ten sprawdza, czy proces uwierzytelniania u ytkowni-ka ca y czas trwa, gdyby zamkn on stron logowania i otworzy j ponownie.

Wtyczka Xamarin.Auth zawiera klas OAuth2Authenticator, której instancja jest tworzonaz wykorzystaniem informacji zawartych w instancji klasy OAuthSettings, zapisanej we w a ciwo-ci ProviderOAuthSettings. W ten sposób wykorzystywane s najlepsze cechy obu klas.

W dalszej cz ci kodu rejestrowane s trzy metody wywo ywane po pomy lnym uwierzytel-nieniu u ytkownika, po przerwaniu procesu uwierzytelnienia oraz po pojawieniu si b dów.Za pomoc metody Auth.GetUI() uzyskiwany jest obiekt w a ciwy danemu systemowi operacyj-nemu, wykorzystywany do wy wietlenia widoku uwierzytelniaj cego. Na koniec, w kodzie ob-s ugi zdarzenia Completed, zamykany jest widok uwierzytelniaj cy.

Zobacz te Rozdzia 2., „Raz deklaruj, wsz dzie wizualizuj” Rozdzia 4., „Ró ne pojazdy, ten sam silnik” https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/

custom-renderer https://components.xamarin.com/view/xamarin.auth

Poleć książkęKup książkę

Page 40: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Xamarin. Tworzenie aplikacji cross-platform. Receptury

52

Poleć książkęKup książkę

Page 41: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Skorowidz

Aadres URL, 58animacje, 249AOP, aspect-oriented programming, 109aparat fotograficzny, 95aplikacje

lokalne, 147mieszane, 147natywne, 28sieciowe, 147

atrybut PrimaryKey, 157

Bbaza danych SQLite, 147, 148BCL, Base Class Libraries, 19biblioteka

Calabash, 267CLLocationManager, 195Flurl, 175Fusillade,, 175LocationManager, 195NSURLSession, 174OkHttp, 174PCL, 43, 54, 152Picasso, 175Plugin.XamFormsCrossPlugin.Abstractions,

182Plugin.XamFormsCrossPlugin.WindowsPhone8,

182Refit, 175

Xamarin.Forms.Core, 28Xamarin.Forms.Platform.iOS, 28Xamarin.Forms.Xaml, 28

bloki funkcjonalne, 61, 67

CCI, Continuous Integration, 288CRUD, create, read, update, delete, 148

Ddefiniowanie

detektorów gestów, 240interfejsu u ytkownika, 160testów, 279

akceptacyjnych, 262jednostkowych, 256

uniwersalnych animacji, 249detektor gestów, 240

TapGestureRecognizer, 242dost p do bazy danych, 148dostosowywanie szablonu wiersza, 228dwukierunkowe powi zanie danych, 210

Eefekty specjalne, 239ekran logowania, 29element typu Cheracter, 226

Poleć książkęKup książkę

Page 42: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Skorowidz

322

FFacebook, 43filmy, 185format JSON, 161funkcjonalno ci systemów, 35

Ggesty, 91, 240globalizowanie aplikacji, 138, 144Google, 43GPS, 190grupowanie elementów, 233

Iinformacje o u ytkownikach, 301instrukcja public, 156interfejs

API, 36IDataService, 125IMarkupExtension, 142INotifyCollectionChanged, 226INotifyPropertyChanged, 207, 210, 215, 226IPlatform, 119IRepository, 160ISQLiteConnection, 151ISQLitePlatform, 154IValueConverter, 215IxamFormsCrossPlugin, 183IXamFormsCrossPlugin, 180u ytkownika, 50zak adkowy, 54

IoC, Inverse of Control, 122

Jj zyk XAML, 240JIT, Just in Time, 315

Kklasa

Android.Views.GestureDetector, 248AndroidAppConfigurator, 269AppResources, 144Assert, 261

AVCaptureDevice, 107AVCaptureDeviceInput, 107Behavior<T>, 69BoxView, 91CameraCaptureTask, 105, 107Character, 218, 226ContactDetailPage, 161ContactDetailsViewModel, 134ContactViewModel, 131ContentPage, 40Context, 296CustomBoxView, 94CustomBoxViewRenderer, 92DataService, 134, 167, 174DateTimeToStringConverter, 213EmailValidatorBehavior, 68EntryRenderer, 76GeolocatorImplementation, 192, 195GestureImage, 248GestureImageDroidRenderer, 244GestureImageListener, 248GestureImagePhoneRenderer, 247GroupingObservableCollection<K, T>, 237ImageCell, 231Insights, 301iOSAppConfigurator, 269ListView, 226Localize, 140LocalNotificationsImplementation, 199LoginPageRenderer, 47, 50MainActivity, 125MainPage, 34MainPageRenderer, 83MessageBox, 43MessagingCenter, 138NameService, 111NativeMessageHandler, 168ObservableCollection, 237OnPlatform<T>, 74PageRenderer, 47, 81, 90, 98PhoneApplicationPage, 27, 29Rectangle, 252Repository, 160SettingsTouch, 125SimpleOnGestureListener, 92, 243SQLiteAsyncConnection, 154SQLiteConnectionDroid, 151StoreCameraMediaOptions, 190

Poleć książkęKup książkę

Page 43: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Skorowidz

323

TabbedPage, 55, 60Task, 227TextureView.ISurfaceTextureListener, 106TouchRunner, 258TranslateExtension, 145TriggerAction<T>, 64UIAlertController, 43UIViewController, 50View, 79ViewModelLocator, 131VisualElement, 90WindowsPhoneControl, 86, 90Xamarin.Forms.Appplication, 29Xamarin.Forms.Platform.iOS.FormsApplicatio

nDelegate, 29XamFormsCrossPluginImplementation, 180

kod uniwersalny, 110kodowanie bloków funkcjonalnych, 61kolekcja, 217komórka

EntryCell, 228ImageCell, 228SwitchCell, 228TextCell, 228

kompilacjaJIT, 315warunkowa, 117, 266, 272

komunikator zdarze , 136kontener

NinjectContainer, 125XLabs.IoC, 124

konto Xamarin, 294kontrolka, 75

aparatu fotograficznego, 95CGContext, 91CustomBoxView, 91CustomEntry, 76Entry, 75Image, 232ImageCell, 231Label, 202ListView, 157, 217, 231ViewCell, 231ViewGroup, 91

kontrolki urz dze , 81konwerter warto ci, 211kucz podstawowy, 157

Llista, 217

nawigacyjna, 233od wie anie elementów, 222tworzenie, 222usuwanie elementów, 222

lokalizator zale no ci, 118lokalne powiadomienia, 195, 197

Mmapa, 39mapowanie obiektowo-relacyjne, 148mechanizm uwierzytelniaj cy OAuth2, 50metoda

app.Repl(), 273AuthorizeCameraUseAsync(), 102BeforeEachTest(), 278ConfigureAwait(), 227Convert(), 216ConvertBack(), 216Device.BeginInvokeOnMainThread(), 227DisplayAlert(), 43DummyTest(), 277FadeTo(), 252FinishedLaunching(), 132, 193, 267Forms.Init(), 186, 192GetGreeting(), 112globalXamarin.Forms.Init(), 199HttpClient.GetAsync(), 174ILocalNotifications.Cancel(), 198ILocalNotifications.Show(), 198IMedia.takePhotoAsync(), 189InsertItemAsync(), 175InsertOrdersAsync(), 172IsPickPhotoSupported(), 190LayoutTo(), 252OnAppearing(), 72OnAttachedTo(), 69OnCreate(), 132, 192, 266OnElementChanged(), 51, 89, 97OnLayout(), 98OnTakePhoto(), 97OnToolbarClick(), 226, 227OpenMapButton_Clicked(), 38Page.OnButtonPressed(), 90

Poleć książkęKup książkę

Page 44: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Skorowidz

324

metodaPrepareAndStartCamera(), 98PropertyChangedEventHandler(), 206Raise(), 210RegisterViews(), 131RotateTo(), 252ScaleTo(), 252SetFieldAndRaise<T>, 210Should_Reverse_Word(), 258UpdateAsync(), 167

modyfikatorasync, 227await, 227static, 211

MVVM, Model-View-ViewModel, 127

Nnagrywanie filmów, 185narz dzie

ProGuard, 310Windows App Certification Kit, 320

natywna kontrolka aparatu fotograficznego, 95natywne

kontrolki urz dze , 81wizualizatory, 242

Oobiekt typu

Bundle, 29Contact, 128MainActivity, 29StackLayout, 34

obs uga gestów, 91, 242odbiornik GPS, 190odczytywanie danych GPS, 190odwracanie sterowania, 122Okunevic Stan, 11operacje CRUD, 147, 148, 155optymalizowanie kodu, 319ORM, Object-Relational Mapping, 148

Ppakiet

Microsoft.Net.Http, 162, 166, 168modernhttpclient, 168Newtonsoft.Json, 162, 168

NuGet, 39Punchclock, 168SQLite.Net.Async-PCL, 148SQLite.Net-PCL, 148, 154Xam.Plugin.Media, 185, 189Xam.Plugins.Notifier, 196Xamarin Insights, 296Xamarin.Forms, 186Xamarin.Forms.Maps, 43Xamarin.Insights.Signed, 295Xamarin.UITest, 264

panel Test Cloud, 285PCL, Portable Class Library, 109platforma

NUnit, 261NUnitLite, 261Xamarin.Forms, 20, 308Xamarin.UITest, 262, 268

plikApp.cs, 70App.xaml.cs, 30, 34AppDelegate.cs, 29, 39, 193, 196AppResources.pl.resx, 139Basketball.xaml, 58ContactDetailPage.xaml, 157ContactDetailsPage.xaml.cs, 158ContactListPage.xaml.cs, 134ContactViewModel.cs, 129CrossXamFormsCrossPlugin.cs, 184DataService.cs, 128, 169DetailsPage.xaml.cs, 282FormsTabPage.xaml, 55, 56GestureImageListener.cs, 243GroupingObservableCollection.cs, 235InAppCameraPage.cs, 102InAppCameraPageRenderer.cs, 96Info.plist, 141, 304LoginPage.xaml, 68MainActivity.cs, 125MainPage.cs, 41MainPage.xaml, 169, 229MainPage.xaml.cs, 27, 124, 137, 142, 164, 172,

214MainPageRenderer.cs, 85NameService.cs, 115OAuthSettings.cs, 44OrderDetailsPage.xaml, 163Person.cs, 207PhotoPage.xaml, 58

Poleć książkęKup książkę

Page 45: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Skorowidz

325

PreviewImageUserControl.xaml, 104Properties/WMAppmanifest.xml, 40ProviderManager.cs, 45ReverseServiceTests.cs, 257SQLiteConnectionTouch.cs, 151Tests.cs, 283WMAppManifest.xml, 186XamFormsCrossPluginImplementation.cs,

184XamFormsInsights.cs, 296, 298

pliki.dex, 315dSYM, 300XAML, 70

plugin for Xamarin templates, 179polecenie

app, 274copy, 277Manage NuGet Packages, 162, 168tree, 274

powiadomienia, 195program MSTest, 261programowanie aspektowe, 109projekt

typu Blank Xaml App, 70UnitTestCore, 257wspó dzielony, 109XamFormsDependencyInjection.Droid, 124XamFormsReplTest.UITests, 282XamFormsTestCloud.Droid, 283XamFormsUnitTesting, 257

przesy anie definicji testów, 279publikowanie aplikacji

dla systemu Android, 307dla systemu iOS, 302dla Windows Phone, 316

RREST, Representational State Transfer, 161robienie zdj , 185

Sselektor this, 279serwer

Xamarin Test Cloud Server, 267GitHub, 190

strumie danych, 217systemy CI, 288szablon

Android Layout, 83Cross Platform App, 110, 119, 148, 161, 191,

316Forms Blank Content Page Xaml, 163, 202,

219Interface, 119, 149, 155Resources File, 139Text File, 113Unit Test App, 258wiersza, 228Windows Phone User Control, 86

ledzenieu ytkowników, 301zdarze , 301

rodowiskoVisual Studio, 24Xamarin Studio, 21

TTaskos George, 9TDD, test-driven development, 256technika Bait and Switch, 178terminal Xamarin.UITest REPL, 269testowanie, 255

interfejsu u ytkownika, 269testy

akceptacyjne, 262, 269jednostkowe, 256

tworzenieanimacji, 249listy, 222listy nawigacyjnej, 233testów akceptacyjnych, 269uniwersalnego

ekranu logowania, 29kodu, 109, 110rozwi zania, 20

uniwersalnej aplikacji, 54uniwersalnych wtyczek, 178

Poleć książkęKup książkę

Page 46: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Skorowidz

326

Uuk ad

AbsoluteLayout, 253StackLayout, 232, 252

uniwersalna aplikacja, 54uniwersalne animacje, 249uniwersalny

ekran logowania, 29interfejs u ytkownika, 50, 177

us ugaDependencyService, 114, 115, 120, 121REST, 147, 161, 166Xamarin Insights, 292, 299Xamarin Test Cloud, 256, 279

ustawienia j zykowe, 142usuwanie elementów, 226uwierzytelnianie u ytkowników, 43

VVisual Studio, 24

Wweryfikowanie poprawno ci danych, 67wi zanie danych, 201

dwukierunkowe, 206w kodzie C#, 202w kodzie XAML, 204

widokloginButton, 34passwordEntry, 34userNameEntry, 34

wizualizator, 82w a ciwo

antecedent.Result, 174BackGroundColor, 68BindableProperty, 82BindingContext, 206, 221binding, 204Characters, 222, 228, 234Clicked, 34Command, 242CommandParameter, 242Content, 34ContentDescription, 268Culture, 144

DateOrdered, 215DateTime, 211DisableCollectionTypes, 301DisableDataTransmission, 301Footer, 232GestureRecognizers, 242, 249GroupDisplayBinding, 237GroupShortNameBinding, 237Header, 232HeaderTemplate, 233Height, 35HorizontalOptions, 34IList<ContactViewModel>, 134Implementation.Value, 183IsDestructive, 226IsFocused, 62IsGroupingEnabled, 237IsPullToRefreshEnabled, 227IsRefreshing, 227ItemsSource, 231ItemTappedEventArgs.Item, 221Label.Text, 233NavigationProperty.Child, 204NumberOfTapsRequired, 242ObjectId, 167OrderNumber, 166Orientation, 34RowHeight, 232SelectedItem, 221Spacing, 34StyleId, 268Text, 231UIViewController, 258VerticalOptions, 34Width, 35

WPF, Windows Presentation Foundation, 53wstrzykiwanie zale no ci, 109, 122, 154wtyczka

obs uguj ca gesty, 242uniwersalna, 178Xam.Plugins.Notifier, 198Xamarin, 185

wygl d kontrolek, 75wyj tek

DivideByZeroException, 299NotImplementedException, 183NotSupportedException, 137

wykonywanie zdj , 95

Poleć książkęKup książkę

Page 47: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Skorowidz

327

wysy anielokalnych powiadomie , 195zapyta , 168

wy wietlaniedanych, 221kolekcji danych, 218lokalnych powiadomie , 195mapy, 39natywnych stron, 82

wyzwalacz, 61DataTrigger, 61, 63, 68EventTrigger, 61, 69MultiTrigger, 61, 65, 68PropertyTrigger, 61, 68

wzorzec projektowy MVVM, 127

XXamarin Android Player, 24Xamarin Insights, 292Xamarin Studio, 54Xamarin Studio Community, 21Xamarin.Forms, 19

Zzaznaczanie wiersza listy, 218zdarzenie

ButtonPressed, 82ItemTapped, 221ListView.ItemTapped, 221ManipulationCompleted, 247OnAddContactClick, 265OnDelete, 223OnDetailsClick, 282OnImageTapped, 241OnLogInClick, 272OnPinchUpdated, 241OnRefreshing, 223OnSaveClick, 265OnTakePhotoButtonClicked, 189OnToolbarClick, 223PropertyChanged, 89, 136, 210TextChanged, 69TouchUpInside, 100Xamarin.Forms.Forms.ViewInitialized, 268

zdj cia, 95, 185zmiana wygl du kontrolek, 75znacznik

BoxView.WidthRequest, 75Button, 58, 63ContentPage, 187ContentPage.BackgroundColor, 71ContentPage.Resources, 62DataTemplate, 226, 237DataTrigger, 69GroupHeaderTemplate, 237Image, 58ImageCell, 231Label, 70MenuItem, 225NavigationPage, 60OnPlatform, 74ResourceDictionary, 66TabbedPage.Children., 60TextCell, 226TextCell.ContextActions, 226

zrzut ekranu, 287

ród o danych, 204

Poleć książkęKup książkę

Page 48: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Skorowidz

328

Poleć książkęKup książkę

Page 50: Tytuł oryginału: Xamarin Cross-Platform Development Cookbook · 2019-05-15 · Zaznacz opcjÚ Xamarin Test Cloud i kliknij przycisk Utwórz. ZwróÊ uwagÚ, e nowe rozwizanieÈ

Recommended