1 Windows 8 dla programistów Bartłomiej Zass [email protected] Microsoft
2 Plan prezentacji ► Wprowadzenie do Windows 8 i Modern UI ► Platforma deweloperska ► Wybrane zagadnienia związane z integracją z systemem
3 Zbudowany od podstaw Nowy ekran Start Dotyk, klawiatura i mysz Znany tryb Desktop Windows Store Połączony z Chmurą Szeroki zakres urządzeń Windows „reimagined”
4 Sprzęt
5
6
7 demo Windows 8
8 Dystrybucja aplikacji Windows Store 70:30 lub 80:20 Sideloading Windows 8 Enterprise + domena Windows 8 Pro / Windows RT + sideloading activation key
9 Platforma Windows 8 Windows Store Apps HTML JavaScript C C++ C# VB Desktop Apps Win32.NET / SL Internet Explorer Communication & Data Application Model Devices & Printing WinRT APIs Graphics & Media System Services JavaScript (Chakra) C C++ C# VB XAMLHTML / CSS View Model Controller Windows Core OS Services Core
10 WinRT API z bliska Fundamentals Application ServicesThreading/TimersMemory ManagementAuthenticationCryptographyGlobalization Devices GeolocationPortableSensorsNFC User Interface SVGTilesInputAccessibilityPrinting HTML5/CSSXAMLDirectXControlsData Binding Communications & Data Memory Management XMLNetworkingSMS NotificationsStreams ContractsLocal & Cloud StorageWeb Media PlaybackCapturePlayToVisual Effects
11 Wywoływanie kodu natywnego z C#
12 ...a w Windows 8
13 ImageEncodingProperties^ imageProperties = ref new ImageEncodingProperties(); imageProperties->Subtype = „JPEG”; imageProperties->Width = 320; imageProperties->Height = 240; auto opCapturePhoto = m_mediaCaptureMgr->CapturePhotoToStorageFileAsync(imageProperties, this->m_photoStorageFile); ImageEncodingProperties imageProperties = new ImageEncodingProperties(); imageProperties.Subtype = „JPEG”; imageProperties.Width = 320; imageProperties.Height = 240; await mediaCaptureMgr.CapturePhotoToStorageFileAsync(imageProperties, photoStorageFile); var photoProperties = new Windows.Media.MediaProperties.ImageEncodingProperties(); photoProperties.subtype = „JPEG”; photoProperties.width = 320; photoProperties.height = 240; mediaCaptureMgr.capturePhotoToStorageFileAsync(photoProperties, photoStorage).then(… C++ C# JavaScript
14 demo Hello, Windows 8!
15 Interfejs ma być „Fast & Fluid” Wszystkie API trwające >50 ms muszą być asynchroniczne API bazują na Task Asynchroniczność var data = DownloadData(...); ProcessData(data); DownloadDataAsync ProcessData DownloadData
16 private void DownloadPage() { WebClient client = new WebClient(); client.DownloadStringCompleted += (o, e) => { if (e.Error == null) { WebClient client2 = new WebClient(); client2.DownloadStringCompleted += (o, e) => { if (e.Error == null) {... } }; client2.DownloadStringAsync(new Uri("http://www.microsoft.com")); } }; client.DownloadStringAsync(new Uri("http://www.bing.com")); } Asynchroniczność - trudności
17 private async void DownloadPage() { HttpClient client = new HttpClient(); string bing = await client.GetStringAsync("http://www.bing.com"); string ms = await client.GetStringAsync("http://www.microsoft.com"); naszTextbox.Text = ms; } Asynchroniczność w Windows 8 – C#
18 demo Async i kamera
19 Dostępne kontrakty SettingsSearch App to App picking Share PlayTo
20 demo Integracja z systemem
21 PLM - diagram running suspendednot running activatingsuspending resuming terminating
22 Background Audio Odtwarzanie muzyki w tle Background Transfer Upload / download danych w tle Background Task Nasza własna logika Wywoływane pod określonymi warunkami Praca w tle
23 Execution = Trigger + [Condition] TriggerCondition InternetAvailable, InternetNotAvailable, SessionConnected, SessionDisconnected, UserNotPresent, UserPresent SystemEventTrigger ControlChannelReset # InternetAvailable LockScreenApplicationAdded/Removed NetworkStateChange OnlineIdConnectedStateChange ServicingComplete SessionConnected/Disconnected # SmsReceived TimeZoneChange UserAway/UserPresent # ControlChannelTrigger # (**) TimeTrigger # PushNotificationTrigger # (**) MaintenanceTrigger # wymaga lock permission **może być in-proc (nie BackgroundTaskHost.exe)
24 Live Tiles – wrażenie aktywności Dostarczają informacji, kiedy aplikacja jest wyłączona Wrażenie, że aplikacja działa w tle i zaproszenie do powrotu Dwa mechanizmy do aktualizacji Lokalne API Notyfikacje PUSH
25 Komunikaty Toast Podobna struktura do kafelków (oparta o szablony) Różne możliwości wizualne
26 Push Notifications 1
27 Notyfikacje Push 4 typy komunikatów Tile Badge Toast Raw Azure Mobile Services
28 demo Notyfikacje Push i Azure Mobile Services
29 Podsumowanie Aplikacje Windows Store Dla Windows 8 i Windows RT (ARM) Dystrybucja przez Windows Store Sideloading (aplikacje enterprise) Wiesz, jak je pisać XAML + C# C++ i XAML / DirectX HTML 5 i JavaScript Proste sposoby integracji z systemem
30 Zasoby Główna strona dla programistów Windows 8, Windows Store http://dev.windows.com http://dev.windows.com Ogromna baza przykładów http://code.msdn.microsoft.com/windowsapps/ http://code.msdn.microsoft.com/windowsapps/ Windows 8 Camp in a Box – HOL, dema, prezentacje http://www.microsoft.com/en-us/download/details.aspx?id=29854 http://www.microsoft.com/en-us/download/details.aspx?id=29854 Nagrania sesji z konferencji Build http://www.buildwindows.com/ http://www.buildwindows.com/