Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie urządzeń mobilnych

Podobne prezentacje


Prezentacja na temat: "Programowanie urządzeń mobilnych"— Zapis prezentacji:

1 Programowanie urządzeń mobilnych
Bartłomiej Zass Microsoft

2 Plan prezentacji Aplikacje mobilne w HTML i JavaScript
Aplikacje natywne Windows 8, Windows Phone 7 – krótkie przypomnienie Windows Phone 8 dla programistów Techniki współdzielenia kodu dla aplikacji natywnych Windows Phone 8, Windows 8 – podobieństwa i różnice Architektura aplikacji - MVVM i Portable Class Libraries

3 3/28/2017 Źródło: Gartner © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

4 3/28/2017 © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

5 Dlaczego HTML i Javascript?
Jedyny wspólny mianownik między platformami Przeglądarki internetowe w urządzeniach mobilnych Osadzone kontrolki przeglądarki w natywnych aplikacjach A może C++? Windows Phone 8 obsługuje C++ Objective-C to NIE C++ “79% of mobile developers report that they will integrate some HTML5 in their apps in 2012” Appcelerator/IDC – Q – Mobile Developer Report

6 Javascript dzisiaj Natywne aplikacje dla Windows 8
Gry – np. Cut The Rope, Angry Birds Office 2013, Sharepoint Node.js Cała masa bibliotek – nie tylko jQuery! „Model-View-Whatever” w Javascript np. Knockout, Angular, Backbone, Mustache Ciekawostki - LINQ w JS - implementacja Linux w JS

7 TypeScript Nowy język autorstwa Andersa Hejlsberga (twórca C#)
Nadzbiór Javascript Nie trzeba uczyć się nowej składni Silnie typowany Javascript Klasy, interfejsy, dziedziczenie, modyfikatory dostępu, ... Częściowa zgodność z propozycją ECMAScript 6 Refactoring, wsparcie Visual Studio Kompilowany do Javascript!

8 Demo TypeScript

9 Strategie - HTML 5 i aplikacje mobilne
Frameworki Javascript JQueryMobile SenchaTouch Jo Propulsion Cross-kompilacja Rozwiązania hybrydowe Mobilna strona Titanium (Appcelerator) Apache Cordova (PhoneGap) AppMobi Natywna platforma aplikacyjna Przeglądarka obsługująca HTML 5 OS platform

10 Demo jQuery Mobile

11 Apache Cordova Dostęp do natywnych funkcji z poziomu JavaScript
Inaczej niż w Windows 8 – opakowana kontrolka przeglądarki PhoneGap – popularna dystrybucja Apache Cordova Obecnie własnością Adobe PhoneGap Build Service Aplikacje mogą być zgłaszane do sklepów Windows Phone, Android, iOS, Symbian, BlackBerry, ... Windows 8 póki co nie – może nie mieć sensu Windows Phone 8 – nadal ma zastosowanie, pełne wsparcie

12 PhoneGap i Windows Phone

13 Demo PhoneGap i Windows Phone

14 Aplikacje natywne Windows 8 – krótkie przypomnienie Windows Phone

15 Windows Core OS Services
Platforma Windows 8 Windows Store Apps HTML JavaScript C C++ C# VB Desktop Apps Win32 .NET / SL Internet Explorer JavaScript (Chakra) C C++ C# VB XAML HTML / CSS View Model Controller Communication & Data Application Model Devices & Printing WinRT APIs Graphics & Media System Services Windows Core OS Services Core

16 Demo Windows 8 i Windows Phone 7

17 Windows Phone 8

18 Nowe telefony, nowe rozdzielczości, …
wiele rdzeni procesora, nowy procesor graficzny, nowoczesna architektura, karty MicroSD, NFC, 720p 1280 x 720 16:9 WVGA 800 x 480 15:9 WXGA 1280 x 768 15:9

19 Myśl o layoutach w pikselach WVGA Myśl o grafice / filmach w WXGA
1.0 Scale WXGA 768x1280 1.6 Scale 720p 720x1280 1.5 Scale 400 Logical 400 Physical 400 Logical 640 Physical 400 Logical 600 Physical 2 Logical 2 Physical 2 Logical 3 Physical (Rounded) 2 Logical 3 Physical 30 Logical 30 Physical 30 Logical 48 Physical 30 Logical 45 Physical Myśl o layoutach w pikselach WVGA Myśl o grafice / filmach w WXGA

20 Windows Phone 8 i Windows 8
Wspólne jądro systemu – Windows NT Te same komponenty systemowe Sieć, kernel, grafika, system plików, multimedia Wspólny model sterowników Obsługa wielu rdzeni w Windows Phone Solidna, nowoczesna platforma do przyszłej rozbudowy Ten sam CLR Nie oznacza to dokładnie tego samego API Obecnie - wiele podobieństw W przyszłości - na pewno bardzo dużo wspólnego kodu

21 Windows Phone 8 API .NET API for Windows Phone Windows Phone Runtime
WP8.0 Games DirectX/Direct 3D & C++ Aplikacje managed wykorzystujące WP 7.1, WP NET oraz WinPRT API Natywne aplikacje wykorzystujące WinPRT i Win32 Gry wykorzystujące WP 7.1 XNA Framework Gry wykorzystujące Direct3D lub DirectX WP8.0 XAML & C++ WP8.0 XAML & C#/VB with Direct3D Graphics WP8.0 XAML & C#/VB WP7.1 XNA & C#/VB WP7.1 XAML & C#/VB .NET API for Windows Phone Windows Phone Runtime Win32 & COM Managed Managed & Native Native

22 Windows Phone 8 i Windows 8 – c.d.
Kod natywny (C++) Współdzielenie większości kodu Wspólny kod gier wykorzystujących DirectX / Direct3D HTML 5 np. PhoneGap, własne rozwiązanie hybrydowe lub strony mobilne Ten sam silnik Internet Explorer 10! C# / VB.NET Dla programistów WP 8 – wiele klas współdzielonych z WinRT Drobne różnice w podstawowym API (zwłaszcza widoki)

23 .NET API for Windows Phone
Zarządzany kod Wszystkie API z Windows Phone 7.1 Przestrzenie nazw System oraz Microsoft.Phone Wiele nowych klas dodanych w WP 8, np.: Microsoft.Phone.Wallet Microsoft.Phone.Tasks.ShareMediaTask Microsoft.Phone.Tasks.MapsTask Microsoft.Phone.Storage.ExternalStorage Microsoft.Phone.Networking.Voip

24 Windows Phone Runtime API
Podzbiór pełnego WinRT + dodatki specyficzne dla telefonu Windows (Phone) Runtime zaimplementowane w C++ Projekcje do C#, VB.NET, C++ Obecnie brak projekcji do HTML5/JavaScript Pełny WinRT (ok. 11,000 obiektów) Specyficzne dla Windows Phone (wybrane): Synteza i rozpoznawanie mowy VOIP Windows.Phone.PersonalInformation LockScreen,LockScreenManager Wszystkie i dodatki Podzbiór przeniesiony do Windows Phone Runtime (ok. 2,800 obiektów) Nowe dla Windows Phone Runtime (ok. 600 obiektów)

25 Wspólne API dla WinRT i WinPRT
Wybrane wspólne przestrzenie nazw i klasy Windows.ApplicationModel.Package Windows.ApplicationModel.Activation Windows.ApplicationModel.DataTransfer Windows.ApplicationModel.DataTransfer.DataTransferManager Windows.ApplicationModel.Store Windows.Devices.Geolocation Windows.Devices.Sensors.Accelerometer Windows.Devices.Sensors.Compass Windows.Devices.Sensors.Gyrometer Windows.Devices.Sensors.Inclinometer Windows.Foundation.IAsyncAction Windows.Foundation.IAsyncOperation(TResult) Windows.Graphics.Display Windows.Networking.Connectivity Windows.Networking.Proximity Windows.Networking.Sockets Windows.Storage Windows.Storage.Pickers Windows.System.Launcher Windows.System.Threading.Threadpool Wszystkie

26 Przypadki duplikacji w API
W kilku przypadkach, WinPRT API oferują podobne funkcjonalności do .NET API z WP 7.5, np.: Możemy skorzystać z dowolnego API Deweloperzy adresujący WP 7.1 oraz WP 8 będą preferowali .NET API Deweloperzy myślący o współdzieleniu kodu pomiędzy Windows Phone 8 i Windows 8 będą skłaniali się do WinPRT API .NET API Windows Phone Runtime API System.IO.IsolatedStorage Windows.Storage System.NET.Sockets Windows.Networking.Sockets System.Threading.ThreadPool Windows.System.Threading.ThreadPool Microsoft.Devices.Sensors Windows.Devices.Sensors

27 Win32 i COM API Oprócz .NET i WinPRT API, dostęp do niektórych Win32 API, np.: Winsock do niskopoziomowego oprogramowania połączeń Camera APIs dla aplikacji natywnych COM APIs takie jak CoInitializeEx, CoTaskMemAlloc, CoTaskMemFree, CreateFile2, ReadFile, WriteFile, HeapAlloc, CreateMutexExW, WaitForSingleObjectW, … Głównie dla programistów piszących w kodzie natywnym Możliwość dodania referencji w projekcie managed (rzadko potrzebne)

28 Co z aplikacjami na Windows Phone 7.x?

29 Aplikacje WP 7.x na systemie WP 8.0
Aplikacje stworzone na WP 7.x będą działały na telefonach z systemem WP 8.0 bez rekompilacji WP OS 8.0 app WP OS 7.1 app WP OS 7.1 app WP OS 8.0 app +Quirks WP 8.0 Runtime/Libraries

30 Skąd wziąć narzędzia do programowania?

31 Twoje centrum dowodzenia aplikacjami

32 Konto deweloperskie Nie jest wymagane do tworzenia aplikacji
Jest wymagane do testowania aplikacji na urządzeniu i publikacji jej w Windows Phone Store Jak je otrzymać?: znajduje się w MSDN, studenci bezpłatnie poprzez Dreamspark, płacąc 99$ rocznie per programista.

33 Wymagania sprzętowe dla WP SDK 8.0
System operacyjny: Windows 8 x64 Hardware: zalecane 4GB RAM, 8GB wolnej przestrzeni dyskowej WP Emulator wymaga Second Level Address Translation (SLAT)

34 Lock the Screen na emulatorze
Z klawiatury: Dwa razy F12 Simulation Dashboard

35 Symulacja sieci Dostępne w simulation dashboard
Testowanie dla różnych warunków sieci

36 Zrzuty ekranu Na emulatorze Na urządzeniu Przyciski Win + power

37 Co nowego w Windows Phone 8?

38 Wydajność aplikacji Czas startu bardzo ważny z punktu widzenia użytkownika Facebook WP 7 – 12 sekund WP 8 – 4 sekundy Dlaczego? Zmiany w środowisku uruchomieniowym Usprawnienia CoreCLR Kompilowanie w chmurze Dual core > 1 ghz 

39 Kompilowanie w chmurze
CoreCLR dodaje wsparcie dla NGEN Czasochłonne na urządzeniu Po zgłoszeniu aplikacji do Windows Store automatyczny NGEN Nowe aplikacje Zgłaszamy XAP XAP aktualizowany – kod natywny Co z istniejącymi aplikacjami? Aplikacje WP 7.5 kompilowane przez NGEN dla WP 8 Oryginalny XAP pozostaje dla WP 7.x

40 Model aplikacji Użytkownicy oceniają aplikację na podstawie własnych doświadczeń 4 sekundy to wciąż długo, jeśli często uruchamiamy aplikację Za każdym razem wchodzenie do określonej sekcji aplikacji Fast Application Swithing – WP 7.x Przycisk wstecz Task switcher – wielu użytkowników nie wie o nim

41 Fast Application Resume
Aplikacja może być wskrzeszana niezależnie od tego jak została uruchomiona Lista aplikacji Live Tile Toast Deep link Jeśli jest na stosie – przywracanie Jeśli nie ma jej na stosie – nowa instancja Podobnie jak w Windows 8

42 Włączanie Fast Application Resume
Domyślnie wyłączone Ochrona interfejsu użytkownika Pewność, ze aplikacje będą działały prawidłowo Bardzo proste do włączenia Nowy atrybut ActivationPolicy w DefaultTask <DefaultTask Name="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume"/>

43 Kontrolki ProgressBar animuje się poza wątkiem UI
Panorama, Pivot i LongListSelector przeniesione do ROM Mniejsze zużycie pamięci przez kontrolkę Panorama Poprawiony „first touch experience” Toolkit –

44 LongListSelector JumpList Grid View Sticky Headers

45 Nowa kontrolka do wyświetlania map
Nowa kontrolka korzysta z technologii i zasobów Nokia Zawiera m.in.: Bazuje na wektorach cztery modele kartograficzne tryb jasny i ciemny informacje o ruchu, trasach itp.

46 Nowe API służące do lokalizacji
Bliźniacze do API w Windows 8 Windows Phone OS 7.1 .NET Location API nadal jest wspierane Background task pobierający lokalizację urządzenia Tylko 1 agent Tylko kiedy aktywnie śledzi położenie

47 Jak włączyć? <DefaultTask Name="_default" NavigationPage="Views/Home.xaml"> <BackgroundExecution> <ExecutionType Name="LocationTracking" /> </BackgroundExecution> </DefaultTask>

48 Nowe wielkości i szablony kafelków
W Windows Phone 8 możemy korzystać z trzech typów Tile: Flip – dwa „rotujące” obrazki (tożsame z WP 7.1 Tile) Iconic – sama pojedyncza ikona Cycle – „rotacja” do dziewięciu różnych obrazków

49 Dostęp do Lockscreen Użytkownik może dodać powiadomienia z naszej aplikacji (LockScreen Notification) Nasza aplikacja może zmienić tło zablokowanego ekranu (LockScreen Background) New Shell APIs ShellSetWallpaper to use a new image ShellWallpaperSchedule to download a single image from the internet on a specific interval (e.g., 30 mins, 1 hour, etc.) ShellWallpaperFolderSchedule to cycle through a set of image in app’s isolated storage (e.g., a photo slideshow) based on number of views of the lock screen

50 Zestaw nowych launcherów
SaveAppointmentTask ShareMediaTask MapDownloaderTask MapsTask MapsDirectionsTask

51 Komendy głosowe i rozpoznawanie mowy
Voice Commands umożliwia uruchomienie aplikacji, lub jej konkretnej funkcji, za pomocą głosu, po przytrzymaniu przycisku Start Speech Recognition + Text-to-Speech API wspiera przekształcenie mowy w tekst i czytanie już zapisanego teksu

52 Portfel Możliwość zarządzania kartami i „kuponami” z poziomu własnej aplikacji Obsługa kart: kredytowych i debetowych, lojalnościowych, specjalnych ofert, Wsparcie dla „tap to pay”

53 Nowe możliwości aparatu fotograficznego i przetwarzania zdjęć
Lenses = rozszerzenia do kamery oferujące nowe opcje, możemy tworzyć je sami i udostępniać użytkownikom Picture.GetPreviewImage() = miniaturka obrazka Integracja aplikacji z Photo Edit Picker lub rejestracja jako własny edytor Upload zdjęć w tle do zewnętrznych serwisów Zaawansowana kontrola (klasy PhotoCaptureDevice i AudioVideoCaptureDevice)

54 VoIP i wideo rozmowy API dostępne dla wszystkich deweloperów
Windows Phone Summit_2012 3/28/2017 VoIP i wideo rozmowy API dostępne dla wszystkich deweloperów Rozmowy integrują się z systemem telefonu Aplikacje VoIP działają również w tle © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

55 Protokoły i asocjacje Własne schematy Integracja z przeglądarką
Rejestracja własnego URI dla aplikacji Np. skype:jankowalski – rozpoczyna konwersację Fb://profile/ – otwiera profil użytkownika Integracja z przeglądarką Integracja między aplikacjami Typy plików Zarejestruj aplikację dla danego formatu pliku

56 Deep linking - przykład
Loved the Purple Onion Peter Bergman Skype:PeterBergman

57 Bluetooth i NFC Bluetooth API Proximity API
komunikacja aplikacja – aplikacja, komunikacja aplikacja – urządzenie Proximity API połączenie aplikacji z wykorzystaniem Bluetooth, ustanowenie połączenia Wi-Fi, Bluetooth lub Wi-Fi Direct pomiędzy aplikacją, a jej instancją działająca na innym urządzeniu, wysyłanie danych poprzez NFC, interakcję z tagami NFC

58 Możliwości sieciowe Windows.Networking Windows Phone Runtime API
nowe API kompatybilne z Windows 8 Nasłuchiwanie przychodzących połączeń (Incoming Sockets) wspierane przez System.Net.Sockets i Windows.Networking.Sockets Wsparcie dla IPV6 Wsparcie dla Winsock API możliwość przenoszenia już istniejących bibliotek natywnych korzystających z tego API

59 Przechowywanie danych na kartach MicroSD
Microsoft.Phone.Storage API umożliwia czytanie danych z karty MicroSD Użytkownik może zapisywać personalne dane i multimedia na karcie w telefonie Zdjęcia ▪ Muzyka Filmy ▪ Instalacja aplikacji

60 Baza danych SQL Server i Linq To SQL nadal obsługiwane SQLite
Wiele zgłoszeń, że potrzebne są alternatywne rozwiązania Kompatybilność z innymi platformami SQLite

61 Własna lista kontaktów
Dostęp do API umożliwiającego tworzenie, edycję, kasowanie, przeszukiwanie własnych typów kontaktów Możliwość automatycznej synchronizacji listy z listą wystawiona na własnym serwerze Dostęp read/write do własnych Dostęp readonly do pozostałych jeśli użytkownik wyraził zgodę (jak w Mango)

62 In-app Purchase = zakupy wewnątrz aplikacji
API do tworzenia aplikacji z katalogiem własnych produktów Microsoft zapewnia całe środowisko sprzedażowe Po stronie programisty pozostaje obsługa zakupionego przez użytkownika przedmiotu

63 Enterprise Zarządzanie urządzeniami Deployment inTune, itp.
Ustawianie i aktualizowanie polis Automatyczne aktualizowanie aplikacji Deployment Nie trzeba zgłaszać aplikacji do Windows Store Różne sposoby wdrażania (managed / unmanaged), web, , aplikacja

64 Tworzenie konta Firmowe konto Nazwa firmy wyświetlana na telefonie
Wymagane zatwierdzenie żądania

65 Deployment – managed vs unmanaged
Build 2012 3/28/2017 Deployment – managed vs unmanaged Feature Managed Unmanaged Enrollment method Settings applet + MDM /browser Policy management Yes No Number of enrollments Limited to 1 Unlimited App install method MDM/company hub /browser/company hub App inventory MDM Silent app updates Unenroll Remote and local © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

66 Managed enrollment Build 2012 3/28/2017
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

67 Company Hub Windows Phone Summit_2012 3/28/2017
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

68 Windows Phone i Windows 8

69 Wspólne API dla WinRT i WinPRT
Wybrane wspólne przestrzenie nazw i klasy Windows.ApplicationModel.Package Windows.ApplicationModel.Activation Windows.ApplicationModel.DataTransfer Windows.ApplicationModel.DataTransfer.DataTransferManager Windows.ApplicationModel.Store Windows.Devices.Geolocation Windows.Devices.Sensors.Accelerometer Windows.Devices.Sensors.Compass Windows.Devices.Sensors.Gyrometer Windows.Devices.Sensors.Inclinometer Windows.Foundation.IAsyncAction Windows.Foundation.IAsyncOperation(TResult) Windows.Graphics.Display Windows.Networking.Connectivity Windows.Networking.Proximity Windows.Networking.Sockets Windows.Storage Windows.Storage.Pickers Windows.System.Launcher Windows.System.Threading.Threadpool Wszystkie

70 Przypadki duplikacji w API
W kilku przypadkach, WinPRT API oferują podobne funkcjonalności do .NET API z WP 7.5, np.: Możemy skorzystać z dowolnego API Deweloperzy adresujący WP 7.1 oraz WP 8 będą preferowali .NET API Deweloperzy myślący o współdzieleniu kodu pomiędzy Windows Phone 8 i Windows 8 będą skłaniali się do WinPRT API .NET API Windows Phone Runtime API System.IO.IsolatedStorage Windows.Storage System.NET.Sockets Windows.Networking.Sockets System.Threading.ThreadPool Windows.System.Threading.ThreadPool Microsoft.Devices.Sensors Windows.Devices.Sensors

71 Demo WinPRT i WinRT - podobieństwa

72 Wybrane różnice Namespace’y XAML Event handlery Nawigacja SQL CE
WP – xmlns:imgsch="clr-namespace:ImageSearch;assembly=…" W8 – xmlns:imgsch="using:ImageSearch" Event handlery WP – System.Windows.RoutedEventArgs W8 – Windows.UI.Xaml.RoutedEventArgs Nawigacja WP – NavigationService.Navigate(new Uri("/page.xaml?Id=5", UriKind.Relative)); W8 – Frame.Navigate(typeof(DetailsPage), e.ClickedItem); SQL CE Windows 8 - brak

73 Zapis ustawień Windows Phone 7 Windows 8 Roaming – tylko Windows 8
settings = IsolatedStorageSettings.ApplicationSettings; settings["exampleSetting"] = "Hello Phone"; Windows 8 settings = Windows.ApplicationData.Current.LocalSettings; container = settings.CreateContainer(“main", ApplicationDataCreateDisposition.Always); settings.Containers["main"].Values["exampleSetting"] = "Hello Windows"; Roaming – tylko Windows 8 settings = ApplicationData.Current.RoamingSettings;

74 Kontrolki XAML Mapowanie kontrolek Np. GridView, ListView
Np. Panorama, Pivot Mapowanie kontrolek Np. Grid, StackPanel, TextBox, ListBox, Button, itp.

75 Demo Z Windows Phone do Windows 8 - różnice

76 Techniki współdzielenia kodu
Współdzielenie elementów XAML Separacja logiki i UI – wzorzec Model-View-ViewModel Wspólna logika w Portable Class Libraries Dodawanie plików jako link Własne komponenty Windows Runtime (tylko WP 8) Kompilacja warunkowa + dyrektywy preprocesora

77 Współdzielenie logiki – jak?
Brak binarnej kompatybilności między projektami Silverlight, Windows Phone, Windows 8, WPF Osobne typy class library

78 Trudności w utrzymaniu...

79 Portable Class Libraries
Jedno źródło Jeden projekt Jedne binaria Wiele platform!

80 Platform / feature matrix

81 Demo Portable Class Library

82 Model-View-ViewModel
Widoki Jak wyświetlić informację? Napisane w XAML View Modele Jaką informację wyświetlić? Logika interakcji Modele Model danych Logika biznesowa ... View Platform-specific Messages DataBinding Commands View Service PropertyChanged ViewModel Przenośne Events Model

83 Demo Przyspieszony kurs podstaw MVVM

84 Architektura cross-platform
Windows Store App Windows Phone App Startup Startup Widoki Widoki Kod platform - specific Kod platform - specific Portable Class Library View Modele Referencja Referencja Modele Abstrakcje platform - specific

85 Abstrakcja – interfejs
// W Portable Class Library public interface IFileStorage { Task SaveFileAsync(string filename, string contents); Task<string> LoadFileAsync(string filename); } // W ViewModelu public void Save() _fileStorage.SaveFileAsync(Filename, Contents); public async void Load() Contents = await _fileStorage.LoadFileAsync(Filename);

86 Dodawanie plików jako link
Również z Partial Classes...

87 Kompilacja warunkowa Nie w Portable Class Library
W plikach XAML – nieobsługiwane Ostrożnie i z umiarem...

88 Demo Portable Class Libraries i MVVM

89 Abstrakcja - klasa abstrakcyjna
public abstract class ServiceBusAdapter {   public static ServiceBusAdapter Current   {     get;     set;   }   public abstract byte[] ComputeHmacSha256(byte[] secretKey, byte[] data); }

90 // Windows Phone - implementacja
public class PhoneServiceBusAdapter : ServiceBusAdapter {   public override byte[] ComputeHmacSha256(byte[] secretKey, byte[] data)   {     using (var cryptoProvider = new HMACSHA256(secretKey))     {       return cryptoProvider.ComputeHash(data);     }   } } // Windows 8 - implementacja public class MetroServiceBusAdapter : ServiceBusAdapter   private const string HmacSha256AlgorithmName = "HMAC_SHA256";     var provider = MacAlgorithmProvider.OpenAlgorithm(HmacSha256AlgorithmName); //...     return hashed.ToArray();

91 Wywoływanie kodu platform-specific
ServiceBusAdapter.Current = new PhoneServiceBusAdapter(); // Windows Phone startup ServiceBusAdapter.Current = new MetroServiceBusAdapter(); // Windows 8 startup // W Portable Class Library var adapter = ServiceBusAdapter.Current; byte[] signatureBytes = adapter.ComputeHmacSha256(issuerSecretBytes, Encoding.UTF8.GetBytes(token));

92 Kod specyficzny dla platformy
Abstrakcje Klasy abstrakcyjne Interfejsy Przekazywanie zależności z kodu aplikacji Kontener IoC Service locator / platform abstraction layer public class ServiceLocator { public static IFileStorage FileStorage { get; set; } public static IPhotoChooser PhotoChooser { get; set; } }

93 Dependency Injection - Unity
// Rejestrowanie usługi – start aplikacji WP 7 _container.RegisterType<IStateService, PhoneIsolatedStorageStateService>(); // Rejestrowanie usługi – start aplikacji Win 8 _container.RegisterType<IStateService, Win8LocalStorageStateService>(); // Rejestrowanie usługi – singleton _container.RegisterType<INavigationService, Win8NaviService>( new ContainerControlledLifetimeManager());

94 Dependency Injection – c.d.
public class MyViewModel(IStateService stateService) { // ... } // Wewnątrz Portable Class Library // Widok bindujemy (np. w XAML) do ServiceLocator.MainViewModel public class ServiceLocator public static MyViewModel MainViewModel get // Automatyczne wstrzykiwanie zal. do konstruktora return container.Resolve<MyViewModel>();

95 Demo Windows Phone i Windows 8 + PCL – przykład zaawansowany

96 Inne platformy? Xamarin MvvmCross
Port Mono dla iOS (MonoTouch) i Android MvvmCross Framework MVVM dostarczany w postaci Portable Class Library Współdzielenie kodu ViewModeli, Modeli oraz usług między Windows Phone, WinRT, MonoTouch i Mono for Android

97 Demo MVVMCross

98 Podsumowanie HTML 5 (+ PhoneGap) Windows Phone 8 i Windows 8
Niski koszt wejścia Wiele platform Niższa wydajność i mniejsze możliwości Windows Phone 8 i Windows 8 Wiele współdzielonych elementów, ale też różnic MVVM i Portable Class Libraries Współdzielenie logiki Abstrakcje funkcjonalności platform-specific

99 Zasoby MVVM IoC Other MVVM Light Toolkit portable fork MvvmCross
Autofac Ninject portable fork Microsoft.Composition (Lightweight MEF) Other Json.NET

100 Zasoby – c.d. MVVM Light toolkit (basics) MVVM Light toolkit (deep dive) Windows 8 and MVVM Light toolkit from-techdays-belgium-and-netherlands.aspx Caliburn.micro concepts

101 Zasoby – c.d. Daniel Plaisted’s blog
Portable Class Library MSDN documentation Portable Class Library overview blog post blogs.msdn.com/b/dotnet/archive/2012/07/06/targeting-multiple-platforms-with-portable-code-overview.aspx Create a continuous client using portable libraries msdn.microsoft.com/en-us/magazine/hh aspx MvvmCross slodge.blogspot.com/2012/05/portable-class-libraries-in-mvvmcross.html Portable Class Libraries on Channel 9 (lots of links in show notes) channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-ToolboxPortable-Class-Libraries


Pobierz ppt "Programowanie urządzeń mobilnych"

Podobne prezentacje


Reklamy Google