Windows 8 dla programistów Bartłomiej Zass Microsoft
Plan prezentacji ► Wprowadzenie do Windows 8 i Modern UI ► Platforma deweloperska ► Wybrane zagadnienia związane z integracją z systemem
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”
Sprzęt
demo Windows 8
Dystrybucja aplikacji Windows Store 70:30 lub 80:20 Sideloading Windows 8 Enterprise + domena Windows 8 Pro / Windows RT + sideloading activation key
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
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
Wywoływanie kodu natywnego z C#
...a w Windows 8
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
demo Hello, Windows 8!
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
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(" } }; client.DownloadStringAsync(new Uri(" } Asynchroniczność - trudności
private async void DownloadPage() { HttpClient client = new HttpClient(); string bing = await client.GetStringAsync(" string ms = await client.GetStringAsync(" naszTextbox.Text = ms; } Asynchroniczność w Windows 8 – C#
demo Async i kamera
Dostępne kontrakty SettingsSearch App to App picking Share PlayTo
demo Integracja z systemem
PLM - diagram running suspendednot running activatingsuspending resuming terminating
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
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)
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
Komunikaty Toast Podobna struktura do kafelków (oparta o szablony) Różne możliwości wizualne
Push Notifications 1
Notyfikacje Push 4 typy komunikatów Tile Badge Toast Raw Azure Mobile Services
demo Notyfikacje Push i Azure Mobile Services
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
Zasoby Główna strona dla programistów Windows 8, Windows Store Ogromna baza przykładów Windows 8 Camp in a Box – HOL, dema, prezentacje Nagrania sesji z konferencji Build