Programowanie urządzeń mobilnych

Slides:



Advertisements
Podobne prezentacje
One Framework to rule them all
Advertisements

Decyzje projektowe w .NET Framework
Microsoft Windows 2000 dla Administratora. Podstawowe możliwości Wielojęzyczność Wielojęzyczność Usprawnienia interfejsu użytkownika Usprawnienia interfejsu.
Platforma .Net i Vs.Net.
Tworzenie ASP.NET Web Form
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane.
Systemy operacyjne.
ASP.NET i platforma.NET Technologie internetowe ( ) Tomasz Popów
Usługa Windows Server Update Services (WSUS)
Koordynatorzy: Krzysztof BIKONIS Marek MOSZYŃSKI
Wzorce projektowe w J2EE
Systemy zarządzania treścią CMS
Licencjonowanie Lync 2013 Poziom 200.
Błażej Miśkiewicz Grupa domowa w Windows 7 Błażej Miśkiewicz MCT MCP MCSA MCTS MCITP.
Błażej Miśkiewicz Windows Home Server 2011 Błażej Miśkiewicz MCT MCP MCSA MCTS MCITP.
Drukarki w Windows 7/Windows Server 2008 R2
Nowoczesna architektura w aplikacjach Windows Store
Wstęp do programowania urządzeń z systemem. Windows Phone 7
Zastosowanie frameworka Kendo UI w aplikacjach ASP.NET MVC
Rozwój aplikacji przy wykorzystaniu ASP.NET
Aplikacje Internetowe
IT Asset Management Service
Cecylia Szymanska - Ban | Education Lead Microsoft.
System webowy do tworzenia kolektywnych prototypów aplikacji sieciowych i mobilnych Łukasz Przywarty
* HTML5 i CSS3 w nowoczesnych serwisach internetowych
… iSCSI … Windows Server 2012 Łukasz Dylewski.
Nowe partnerstwa wokół ARM oraz kontynuowane wsparcie dla x86/64 Usprawnienia w fundamentalnych obszarach związanych z pracą mobilną Wsparcie dla wielu.
KINECT – czyli z czym to się je?
Architektura Systemu Źródło:
KINECT – czyli z czym to się je?. O czym będziemy mówić? Obecna oferta rynkowa. Co to jest i jak działa Kinect? Jak przygotować komputer do pracy z Kinectem?
MMH Mobile Projekt programistyczny 2013
XNA na Windows Phone Od kodu do pubikacji
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
Microsoft Expression Studio
Opracował : Przemysław Drzymała
Windows Phone 7 XNA Game development
Realizacja aplikacji internetowych Silverlight. Silverlight – krótka historia Silverlight 1 beta - wiosna 2007 Silverlight 2 beta – wiosna 2008 produkcja.
Licencjonowanie aplikacji serwerowych
Jak to działa? aplikacje desktopowe usługi online urządzenia
Kreatywny konkurs na aplikację METRO dla Windows 8
HTML5 - czy przewróci do góry nogami rynek aplikacji?
Witold Bołt. Agenda W czym tkwi problem..? Po co jest oprogramowanie? Kim jest użytkownik? Zbieranie danych Co to jest design Współpraca programista-projektant.
Przygotował: Paweł Ziaja
Wykonał: Michał Nikołajuk
Model – View – View Model
KINECT Jakub Hossa Microsoft Student Partner. KINECT Jakub Hossa Microsoft Student Partner.
Kostyantyn Doronovych, 79129, sr1640 Łukasz Marciniak, 79166, sr1640
Kostyantyn Doronovych, 79129, sr1640 Łukasz Marciniak, 79166, sr1640
Wstęp do ASP.NET Arkadiusz Popa Serwery Aplikacji
Windows 7 – minimalne wymagania[14] Procesor1 GHz x86 lub x86-64 (32-bit lub 64-bit) Pamięć RAM1 GB (32-bit) / 2 GB (64-bit) Karta graficznaDirectXDirectX.
Windows 8.1 dostarcza spójną platformę do tworzenia aplikacji, które potrafią dostosować się do wielu urządzeń Zaprojektowane raz, działają.
Windows Phone 7. Plan prezentacji  Podstawowe informacje o Windows Phone  Platforma programistyczna  Demo.
Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Platforma programistyczna  C#(VB) i XAML  Platforma programistyczna  Visual Studio 2010 Express for Windows Phone (Visual Studio 2010)  Windows Phone.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Technologie internetowe i mobilne
Programowanie Windows (Win32/Win64 API)
Dokumentacja obsługi programów Kamil Smużyński Piotr Kościński.
Platforma .Net.
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
 Podstawowy składnik.NET Framework  Technologia tworzenia w pełni dynamicznych stron internetowych działających po stronie serwera  Zorientowanie na.
Implementacja wzorca MVVM w Prism 5.0
Windows 8 dla programistów Bartłomiej Zass Microsoft.
System lokalizacji GPS
C# może więcej! Budowanie aplikacji mobilnych na platformy iOS/Android/Windows Phone przy użyciu narzędzi Xamarin Platform
Aplikacje i usługi internetowe
Podstawy programowania
Zapis prezentacji:

Programowanie urządzeń mobilnych Bartłomiej Zass Microsoft

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/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.

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.

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 – Q1-2012 – Mobile Developer Report

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 http://jscriptlinq.codeplex.com/ - LINQ w JS http://bellard.org/jslinux/ - implementacja Linux w JS

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!

Demo TypeScript

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

Demo jQuery Mobile

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

PhoneGap i Windows Phone

Demo PhoneGap i Windows Phone

Aplikacje natywne Windows 8 – krótkie przypomnienie Windows Phone

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

Demo Windows 8 i Windows Phone 7

Windows Phone 8

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

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

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

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 8.0 .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

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)

.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 …

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)

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

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

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)

Co z aplikacjami na Windows Phone 7.x?

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

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

Twoje centrum dowodzenia aplikacjami http://dev.windowsphone.com

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.

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)

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

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

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

Co nowego w Windows Phone 8?

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 

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

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

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

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"/>

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 – http://phone.codeplex.com

LongListSelector JumpList Grid View Sticky Headers

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.

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

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

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

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

Zestaw nowych launcherów SaveAppointmentTask ShareMediaTask MapDownloaderTask MapsTask MapsDirectionsTask

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

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”

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)

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.

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

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

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

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

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

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

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)

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

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, email, aplikacja

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

Deployment – managed vs unmanaged Build 2012 3/28/2017 Deployment – managed vs unmanaged Feature Managed Unmanaged Enrollment method Settings applet + MDM Email/browser Policy management Yes No Number of enrollments Limited to 1 Unlimited App install method MDM/company hub Email/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.

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.

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.

Windows Phone i Windows 8

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

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

Demo WinPRT i WinRT - podobieństwa

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

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;

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

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

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

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

Trudności w utrzymaniu...

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

Platform / feature matrix

Demo Portable Class Library

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

Demo Przyspieszony kurs podstaw MVVM

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

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);

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

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

Demo Portable Class Libraries i MVVM

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

// 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();

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));

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; } }

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());

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>();

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

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

Demo MVVMCross

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

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

Zasoby – c.d. MVVM Light toolkit (basics) http://channel9.msdn.com/Events/MIX/MIX10/EX14 MVVM Light toolkit (deep dive) http://channel9.msdn.com/Events/MIX/MIX11/OPN03 Windows 8 and MVVM Light toolkit http://blog.galasoft.ch/archive/2012/02/19/impressions-slides-and-code- from-techdays-belgium-and-netherlands.aspx Caliburn.micro concepts http://channel9.msdn.com/Events/MIX/MIX10/EX15

Zasoby – c.d. Daniel Plaisted’s blog http://blogs.msdn.com/b/dsplaisted/archive/2012/08/27/how-to-make-portable-class-libraries-work-for-you.aspx Portable Class Library MSDN documentation http://msdn.microsoft.com/en-us/library/gg597391(v=vs.110) 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/hh852593.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