73
How to master?

How to master?

  • Upload
    karlyn

  • View
    50

  • Download
    1

Embed Size (px)

DESCRIPTION

How to master?. Paweł Żochowski. [email protected] http://zozofromelk.wordpress.com/. Agenda. Mechanizmy dostępu do danych i sensorów Baza danych SQL CE Kontrolki do przedstawiania danych Fast Application Switching Multitasking Live Tiles Zarabiaj! Zakręć się. - PowerPoint PPT Presentation

Citation preview

Page 1: How to master?

How to master?

Page 2: How to master?

Paweł Żochowski

[email protected]://zozofromelk.wordpress.com/

Page 3: How to master?

Agenda

• Mechanizmy dostępu do danych i sensorów• Baza danych SQL CE• Kontrolki do przedstawiania

danych• Fast Application Switching• Multitasking• Live Tiles• Zarabiaj!• Zakręć się

Page 4: How to master?

LAUNCHERS AND CHOOSERSMechanizmy dostępu do danych i sensorów

Page 5: How to master?

Sposoby dostępu do danych

• Izolacja środowiska telefonu od aplikacji użytkownika

• Zapewnione proste metody i funkcje, niewymagające samodzielnego przedstawiania danych

• Zapewnienie bezpieczeństwa i spójności danych naszego klienta

Page 6: How to master?

Lista chooserów• Address Chooser Task for Windows Phone• Camera Capture Task for Windows Phone• Email Address Chooser Task for Windows Phone• Game Invite Task for Windows Phone• Phone Number Chooser Task for Windows Phone• Photo Chooser Task for Windows Phone• Save Contact Task for Windows Phone• Save Email Address Task for Windows Phone• Save Phone Number Task for Windows Phone• Save Ringtone Task for Windows Phone

Page 7: How to master?

Sposoby dostępu do sensorówi komunikacji

• Działanie sensorów niezależne od działania naszej aplikacji

• Brak możliwości ingerencji w wewnętrzne warstwy systemu

• Odczyt i zapis zawsze płynny i dobrze obsłużony– Obsługa map, telefonu, maili i SMS’ów (wraz z historią)– Odtwarzanie mediów

• Bezpieczeństwo prywatności naszego klienta

Page 8: How to master?

Lista launcherów

• Bing Maps Directions Task

• Bing Maps Task• Connection Settings Task• Email Compose Task• Marketplace Detail Task• Marketplace Hub Task• Marketplace Review Task• Marketplace Search Task

• Media Player Launcher• Phone Call Task• Search Task• Share Link Task• Share Status Task• SMS Compose Task• Web Browser Task

Page 9: How to master?

Demo

Launchers and choosers

Page 10: How to master?

PRZECHOWYWANIE DANYCHBaza danych SQL CE

Page 11: How to master?

Czym jest SQL CE

• Relacyjna baza danych oparta na plikach• Działa bardzo podobnie jak bazy MSSQL– Oczywiście trochę ograniczona

• Dostęp odbywa się przez LINQ to SQL

Page 12: How to master?

Różnice pomiędzy MSSQL a SQL CE

• SQL CE działa jako proces na telefonie, nie aplikacja klient-serwer

• Dostęp do SQL CE może odbywać się jedynie za pośrednictwem LINQ to SQL– T-SQL nie jest wspierany!

• Dostęp tylko z aplikacji wywołującej– SQL CE jest umieszczona w IsolatedStorage

Page 13: How to master?

Demo

SQL CE

Page 14: How to master?

PANORAMA & PIVOTKontrolki do przedstawiania danych

Page 15: How to master?

Metro UI Design Guidelines

• Metro to nie WP7!• Design czysty, lekki, prosty i szybki• Odpowiednie elementy do odpowiednich

zastosowań• Wrażliwość na dotyk

http://www.riagenic.com/archives/487http://msdn.microsoft.com/en-us/

library/hh202915(v=VS.92).aspx

Page 16: How to master?

Data Grid

• Nie stosuje się…

• Przypadki dozwolone: Tabela z danymi

Page 17: How to master?

Panorama

• Tylko orientacja pionowa– Jest opcja poziomej, ale się nie stosuje

• Listy oraz elementy poziome• Efekt paralaksy• Zastosowanie: Menu

Page 18: How to master?

Pivot

• Łatwiej zapisuje się stan kontrolki

• Lekka i niekoniecznie zasobożerna

• W obu orientacjach wygląda dobrze

• Zastosowanie: Zestawienie skategoryzowanych danych

Page 19: How to master?

Typografia

42pt20pt

11pt

9pt

Page 20: How to master?

Demo

Panorama & Pivot

Page 21: How to master?

FAST APPLICATION SWITCHINGSzybkie przełączenie się między aplikacjami

Page 22: How to master?

Demo

Fast Application Switching

Page 23: How to master?

Cykl życia aplikacji - uśpienie

running

deactivated

dormant

activated

Odpięcie zasobówZawieszenie wątków i timerów

Szybkie wznowienie aplikacji

Zapis stanuPrzywrócenie stanue.IsApplicationInstancePreserved== true

Page 24: How to master?

Cykl życia aplikacji - Tombstoning

running

deactivated

dormant Odpięcie zasobówZawieszenie wątków i timerów

Przywrócenie stanue.IsApplicationInstancePreserved == false

Resuming

.. .

Tombstone Najstarszej aplikacji

Tombstoned

activated

Page 25: How to master?

Methody i zdarzenia

25

Page 26: How to master?

Wznawianie działania aplikacji

• Obsługa zdarzenia aktywowania aplikacji sprawdza, czy stan został zachowany

private void Application_Activated(object sender, ActivatedEventArgs e){ if (e.IsApplicationInstancePreserved) { // Dormant - objects in memory intact } else { // Tombstoned - need to reload }}

Page 27: How to master?

Obsługa deaktywowania zasobów

Dezaktywacja aplikacji

PhoneApplicationPage.OnNavigatedFrom

PhoneApplicationService.Deactivated

Framework:Odpięcie zasobów

Framework:Zatrzymanie wątków i

timerów

Uśpiona aplikacja

MediaPlayer.PauseMediaElement.Pause

SoundEffectInstance.PauseVibrateController.StopPhotoCamera.Dispose

Zapis strony i stanu (globalnie)

XNA Audio Paused

Sensors Notifications suppressed

Networking Cancelled

Sockets Disconnected

MediaElement Disconnected

Camera Disposed

Page 28: How to master?

Activation Resource Management

MediaElement.Source/Position/Play

Socket.ConnectAsyncnew PhotoCamera/VideoCamera

Przywrócenie stanu aplikacji, jeżeli została tombstonowana

Uruchomiona aplikacja

PhoneApplicationPage.OnNavigatedTo

PhoneApplicationService.Activated

Framework:Przypięcie zasobów

Framework:Wznowienie wątków i

timerów

Uśpiona App

XNA Audio ResumedSensors Notifications resumedNetworking Completed with

CancellationSockets -MediaElement

-

Camera -

Page 29: How to master?

Isolated Storage vs State Storage• Nazwa Isolated storage wywodzi się ze sposobu

przechowywania danych poprzez izolowanie ich od innych aplikacji – Może być używane jako miejsce do przechowywania plików

i folderów– Dostęp nie jest szybki – technologia NVRAM– Może zostać użyte do przechowywania par – nazwa/wartość, np.

ustawienia programu• State storage – ponieważ przechowuje stan aplikacji

– Może zostać użyte do przechowywania par – nazwa/wartość – dla przechowywania stanu aplikacji uśpionych i tombsonowanych

– Bardzo szybki dostęp do danych

Page 30: How to master?

Demo

• Bez Storage• Ze Storage• Pełna obsługa

Captain’s Log

Page 31: How to master?

31

Podsumowanie

• Tylko jedna aplikacja jest aktywna w tym samym czasie• Przyciski Start i Wstecz są używane do przełączania się

pomiędzy aplikacjami i uruchamiania nowych aplikacji• Jeżeli ponad aplikacją jest uruchamiana inna, to aplikacja

jest uśpiona (stale w pamięci, ale nie działa) lub Tombstonowana (usunięta z pamięci)

• Aplikacje używają metod klasy App.xaml.cs do zapisywania i przywracania stanu– Stan może być przechowywany w pamięci celem szybkiego

powrotu do aplikacji lub w Isolated Storage dla pełnego zapisu danych

31

Page 32: How to master?

BACKGROUND TASKSDziałanie w tle

Page 33: How to master?

33

Multitasking

• Background Agents–Okresowi (Periodic)– Zasobożerne (Resource Intensive)

• Transfer danych w tle• Alarmy i przypomnienia• Dźwięk w tle

33

Page 34: How to master?

Agenci

• Agents– Okresowi– Resource Intensive

• Aplikacja może mieć po jednym każdego typu• Inicjalizacja w aplikacji, działanie w tle– Reboot ich nie ruszy

• Kontrola poprzez ustawienia telefonu– Maksymalnie 18 agentów okresowych

• Agend działa maksymalnie 14 dni– Może być odnawiany

Page 35: How to master?

Generic Agent Types

Agenci okresowi• Występowanie– Co 30 min

• Czas działania– ok. 15 sekund

• Ograniczenia– Nie więcej niż

6 MB pamięci– Nie więcej niż

10% CPU

Resource Intensive Agents• Mogą działać, jeżeli…– Zasilanie z sieci– Internet bez GSM

• Występowanie– Co 10 min

• Ograniczenia– Nie więcej niż

6 MB pamięci

Page 36: How to master?

Funkcjonalności agentów

Dozwolone Kafelki Toast Lokalizacja Sieć Zapis i odczyt ISO Storage Sockets Większość API frameworków

Zabronione

Wyświetlanie UI Biblioteki XNA Mikrofon i aparat Sensory Odtwarzanie audio

(tylko przez specjalne API)

Page 37: How to master?

Demo

Captain’s Location Log

Page 38: How to master?

Debugging Background Tasków

• Uciążliwe byłoby czekanie 30 minut na każde wywołanie tasku…

• …ale w trybie debugowania można skrócić ten czas

• Kompilacja warunkowa ułatwi nam zbudowanie takiego projektu

#if DEBUG_AGENT ScheduledActionService.LaunchForTest(taskName,

TimeSpan.FromSeconds(60));#endif

Page 39: How to master?

Debugging Agenta

• Przy użyciu przycisku Start lub Wstecz podczas działania aplikacji z agentem Visual Studio nie odłączy debuggera

• Można ustawiać breakpointy wewnątrz agenta, jak w przypadku zwykłego kodu aplikacji

• Debugger zachowuje się identycznie – można wykonywać aplikację linia po linii lub podglądać zawartość zmiennych

• Działa to też przy debuggowaniu na urządzeniu• Identyczne działanie dla

ResourceIntensiveAgents

Page 40: How to master?

Demo

Debugging Tasks

Page 41: How to master?

File Transfer Tasks

• Możliwe jest tworzenie tasków do przekazywania plików z i do Isolated Storage

• Transfer plików będzie aktywny także po wyłączeniu aplikacji

• Aplikacja może uzyskać dostęp do postępu pobierania/wysyłania pliku

• Obsługa HTTP i HTTPs– FTP nie wspierane

• System kolejkuje pliki

Page 42: How to master?

42

Zasady transferu w tle

• Jest kilka zasad wykorzystywania File Transfer Tasks– Maksymalny rozmiar pliku wysyłanego: 5 MB– Maksymalny rozmiar pliku pobieranego przez GSM: 20

MB– Maksymalny rozmiar pliku pobieranego przez Wi-Fi:

100 MB• Parametry te mogą być modyfikowane poprzez

obiekt TransferPreferences tworzony dla każdego transferu

42

Page 43: How to master?

Demo

Picture Fetch

Page 44: How to master?

Scheduled Notifications

• Czasowe powiadomienia na telefonie• Wspierają alarmy i przypomnienia• Reboot telefonu nie usuwa ich• Zgodne z UX telefonu

Page 45: How to master?

Alarms vs Reminders?

Alarmy

45

Przypomnienia

•Modalne•Odłóż i odrzuć•Własne dźwięki•Brak aplikacji wywołującej•Nie odkładają się na stosie

• Więcej informacji• Integracja z innymi

przypomnieniami• Odłóż i odrzuć• Uruchamiają aplikację• Globalne ustawienia telefonu

Page 46: How to master?

Tworzenie przypomnienia

• Kod tworzy przypomnienie i dodaje je do schedulera telefonu• Wartość eggTime przechowuje czas do wywołania przypomnienia• Ten kod ustawia także stronę aplikacji, którą wyświetli przypomnienie

using Microsoft.Phone.Scheduler;...eggReminder = new Reminder("Egg Timer");

eggReminder.BeginTime = DateTime.Now + new TimeSpan(0, eggTime, 0);eggReminder.Content = "Egg Ready";eggReminder.RecurrenceType = RecurrenceInterval.None;eggReminder.NavigationUri = new Uri("/EggReadyPage.xaml",

UriKind.Relative);

ScheduledActionService.Add(eggReminder);

Page 47: How to master?

Gospodarowanie przypomnieniami

• Przypomnienia są rozpoznawane po nazwie• Ten kod znajduje przypomnienie o nazwie „Egg

Timer” i usuwa je ze schedulera

Reminder eggReminder = ScheduledActionService.Find("Egg Timer") as Reminder;

if ( eggReminder != null ) { ScheduledActionService.Remove("Egg Timer");}

Page 48: How to master?

Demo

Egg Timer

Page 49: How to master?

Audio Playback Agents

• Możliwe jest utworzenie Audio Playback Agenta zarządzającego playlistą

• Identyczny mechanizm jak przy Background Taskach

• Audio może być strumieniowane lub przechowywanie w Isolated Storage

Page 50: How to master?

Background Audio

• Odtwarzanie– Aplikacja dostarcza URL albo strumień do Zune– Audio jest odtwarzane nawet, gdy aplikacja jest zamknięta– Aplikacja jest informowana o zbliżaniu się końca pliku lub bufora

• Integracja z telefonem– Music & Video Hub– Universal Volume Control (UVC), aplikacja uruchomieniowa,

kontrolki, contextual info– Uruchomienie kontekstowe – Start menu, UVC, Music & Video Hub

• Integracja z aplikacją– Aplikacja może pozyskać status odtwarzania, postęp i metadane– Rejestracja notyfikacji odtwarzania

Page 51: How to master?

Podsumowanie

• Aplikacja może tworzyć procesy działające w tle– Periodic Task i ResourceIntensive działają nawet, gdy

aplikacja jest zamknięta– Przypomnienia uruchomią się niezależnie od statusu

działania aplikacji– Audio działa niezależnie od aplikacji

• Aplikacje i ich procesy mogą się komunikować poprzez Isolated Storage

• Visual Studio pozwala debuggować taski w taki sam sposób, jak normalne aplikacje

Page 52: How to master?

LIVE TILESKafelki

Page 53: How to master?

User Experience

• Windows Phone 7 posiada unikatowy system zapewniający użytkownikowi dostęp do najważniejszych informacji poprzez Live Tiles

+• Push Notifications oferują deweloperowi

możliwość przesyłania informacji wprost do aplikacji użytkownika (nawet, gdy aplikacja nie jest aktywna) – w tym aktualizacje kafelków

Page 54: How to master?

Tiles 101

• Skróty do aplikacji• Statyczne lub

dynamiczne• 2 rozmiary: małe i

duże– Duże tylko dla

aplikacji typu 1st party• Kontrolowane przez

użytkownika

Page 55: How to master?

Data Driven Template Model

• Ustalony zestaw property• Każde property odpowiada elementowi na kafelku• Każdy element UI ma określone miejsce• Nie każdy element musi być używany• Animacje nie są rozszerzalne

Background Image(173 x

173 .png)

Title Count

Page 56: How to master?

Scenariusze i popularne aplikacje

Send to WP7 Kafelek z linkiem Toast z linkiem

AlphaJax Obrotowy kafelek Ruchomy toast

Seattle Traffic Map Kafelek z natężeniem

ruchu

Pogoda Kafelek pogodowy Toast ostrzegający

Chess by Post Obrotowy kafelek Ruchomy toast

Beezz Kafelek „Nieczytane” Bezpośredni toast

Są już tysiące aplikacji wspierających Live Tiles!

Page 57: How to master?

Podstawowe i wewnętrzne kafelki

• Kafelek aplikacji– Przypinany z listy aplikacji– Właściwości kafelka z Application

Manifest

• Wewnętrzne kafelki– Nowość w WP7 Mango (7.5)– Tworzone jako wynik działania

użytkownika (w aplikacji)

Front

Back

Page 58: How to master?

Live Tiles – Local Tile API• Update lokalnych kafelków (nie push)

– Pełna kontrola nad wszystkimi properties, niezależnie czy aplikacja działa normalnie, czy w tle

– Calorie counter, sticky notes• Wielokafelek (SIC!)

– Deep-link do specyficznych sekcji aplikacji– Uruchamia odpowiednią akcję

bezpośrednio

Application TileLaunches main app experience

Secondary TileLaunches world news page

Secondary TileLaunches local news page

Page 59: How to master?

Live Tiles – Local Tile API ciąg dalszy

• Update „tyłu” kafelków– Pełna kontrola nad wszystkimi properties, niezależnie czy

aplikacja działa normalnie, czy w tle– Zawartość, tytuł, tło

– Kafelek odwraca się po losowym czasie– Obrót kafelka jest asynchroniczny

Title

Zawartość

Tytuł

TłoString zawartości jest dłuższy

Page 60: How to master?

Demo

Live Tiles – Local Tile API

Page 61: How to master?

Tile Schedule• Okresowo zmienia obraz kafelka bez przekazywania informacji• Używa obrazków tylko z sieci web, nigdy z lokalnych źródeł• Ustawia kanał powiadomień i podpina go do notyfikacji kafelka• Kilka ograniczeń

– Obrazek musi być mniejszy niż 80 KB– Czas ściągania nie może przekroczyć 60 sekund– Kolejne update’y najczęściej co 60 minut– Jeżeli kilkukrotnie update zakończy się niepowodzeniem, system

anuluje dany update• Update może być wykonany jednorazowo, co godzinę,

codziennie, co tydzień lub co miesiąc

Page 62: How to master?

Scheduling Tile Update

public partial class MainPage : PhoneApplicationPage {    private ShellTileSchedule _mySchedule;    public MainPage()   {        InitializeComponent();        ScheduleTile();    }

     private void ScheduleTile()    {        _mySchedule = new ShellTileSchedule();        _mySchedule.Recurrence = UpdateRecurrence.Onetime;        _mySchedule.StartTime = DateTime.Now;        _mySchedule.RemoteImageUri = new

Uri("http://cdn3.afterdawn.fi/news/small/windows-phone-7-series.png");        _mySchedule.Start();    }}

Page 63: How to master?

Update kafelków przez Background Agenta

• W Windows Phone 7.0 jedyną opcją na update Live Tiles było użycie Tile Schedule lub Push Notification Services– Tile Schedule musi pobierać obrazki z Internetu– PNS wymagają implementacji zewnętrznych usług

• Aby kontrolować kafelki kiedy aplikacja nie jest uruchomiona (bez używania PNS i TS) można użyć Background Agentów– Należy użyć ShellTile API

Page 64: How to master?

JAK ZAROBIĆSposoby zarabiania na aplikacjach WP7

Page 65: How to master?

Ścieżki zarabiania

Zarobki

System partnerski

Pisanie aplikacji

Samodzielne umieszczanie

Zatrudnienie jako

deweloper

Page 66: How to master?

System partnerski

• http://pubcenter.microsoft.com/• Łatwa w użyciu kontrolka – przeciągnij i upuść• Zarabianie w wersjach testowych i bezpłatnych

aplikacjach

Page 67: How to master?

Zatrudnienie jako deweloper

• Liczne oferty pracy na rynku zagranicznym• Rosnąca ilość pracodawców na rynku polskim• Windows Phone 7 jest coraz chętniej

wybierany jako telefon dla pracowników korporacji

Page 68: How to master?

MATERIAŁY I SPOŁECZNOŚCIOpis materiałów i miejsc, skąd można czerpać wiedzę

Page 69: How to master?

Fora i społeczności

• http://forums.create.msdn.com/• http://www.xda-developers.com/• http://wp-7.pl/• http://codeguru.pl/• http://msdn.microsoft.com/

Page 70: How to master?

Bibliografia i dokumentacja

• Programming Windows Phone 7Charles PetzoldMicrosoft Presshttp://charlespetzold.com/phone/index.html

• Pełna dokumentacja technicznahttp://msdn.microsoft.com/en-us/library/ff402535(v=VS.92).aspx

Page 71: How to master?

PODSUMOWANIE

Page 72: How to master?

Q&APytania i odpowiedzi

Page 73: How to master?

Paweł Żochowski

[email protected]://zozofromelk.wordpress.com/

Dziękuję!