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
How to master?
Paweł Żochowski
[email protected]://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ę
LAUNCHERS AND CHOOSERSMechanizmy dostępu do danych i sensorów
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
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
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
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
Demo
Launchers and choosers
PRZECHOWYWANIE DANYCHBaza danych SQL CE
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
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
Demo
SQL CE
PANORAMA & PIVOTKontrolki do przedstawiania danych
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
Data Grid
• Nie stosuje się…
• Przypadki dozwolone: Tabela z danymi
Panorama
• Tylko orientacja pionowa– Jest opcja poziomej, ale się nie stosuje
• Listy oraz elementy poziome• Efekt paralaksy• Zastosowanie: Menu
Pivot
• Łatwiej zapisuje się stan kontrolki
• Lekka i niekoniecznie zasobożerna
• W obu orientacjach wygląda dobrze
• Zastosowanie: Zestawienie skategoryzowanych danych
Typografia
42pt20pt
11pt
9pt
Demo
Panorama & Pivot
FAST APPLICATION SWITCHINGSzybkie przełączenie się między aplikacjami
Demo
Fast Application Switching
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
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
Methody i zdarzenia
25
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 }}
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
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 -
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
Demo
• Bez Storage• Ze Storage• Pełna obsługa
Captain’s Log
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
BACKGROUND TASKSDziałanie w tle
33
Multitasking
• Background Agents–Okresowi (Periodic)– Zasobożerne (Resource Intensive)
• Transfer danych w tle• Alarmy i przypomnienia• Dźwięk w tle
33
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
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
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)
Demo
Captain’s Location Log
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
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
Demo
Debugging Tasks
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
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
Demo
Picture Fetch
Scheduled Notifications
• Czasowe powiadomienia na telefonie• Wspierają alarmy i przypomnienia• Reboot telefonu nie usuwa ich• Zgodne z UX telefonu
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
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);
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");}
Demo
Egg Timer
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
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
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
LIVE TILESKafelki
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
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
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
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!
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
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
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
Demo
Live Tiles – Local Tile API
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
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(); }}
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
JAK ZAROBIĆSposoby zarabiania na aplikacjach WP7
Ścieżki zarabiania
Zarobki
System partnerski
Pisanie aplikacji
Samodzielne umieszczanie
Zatrudnienie jako
deweloper
System partnerski
• http://pubcenter.microsoft.com/• Łatwa w użyciu kontrolka – przeciągnij i upuść• Zarabianie w wersjach testowych i bezpłatnych
aplikacjach
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
MATERIAŁY I SPOŁECZNOŚCIOpis materiałów i miejsc, skąd można czerpać wiedzę
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/
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
PODSUMOWANIE
Q&APytania i odpowiedzi