A program a „Tudáshasznosulást, tudástranszfert segítő eszköz-, és feltételrendszer kialakítása, fejlesztése a Műegyetemen” (TÁMOP /1/KMR ) és a „Minőségorientált, összehangolt oktatási és K+F+I stratégia, valamint működési modell kidolgozása a Műegyetemen” (TÁMOP-4.2.1/B-09/1/KMR ) című projektek támogatásával valósul meg. Fejlesztés Windows Phone-ra 2. Fekete Krisztián Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék
Tartalom Blend OS Alkalmazás állapot Beépített alkalmazások használata Platformszolgáltatások Helymeghatározás Adattárolás Csempék Háttérfolyamatok Időzített értesítések 2
Blend Vízió, elképzelés a fejlesztő és a dizájner együttműködése Használjunk MVVM-et! Fejlesztői támogatás Offline tesztadatok kifejezetten a dizájnernek
DEMO Expression Blend
Alkalmazás állapot A cél: felhasználói élmény növelése (Fast Application Switching) Mindig csak egy alkalmazás az előtérben (kivéve background agents) Cél: Háttéralkalmazások ne lassítsák az előtérben levőket Állapotátmeneti modell illeszkedik a mai trendekhez Az állapot elmentése és betöltése a fejlesztő feladata Ha a készülék zárolva van, akkor is futhat alkalmazás
Állapot átmenetek Running DormantTombstoned Closed Az alkalmazás a memóriában marad; a rendszer elveszi az erőforrásokat és felfüggeszti a szálakat Állapot újratöltés ha szükséges Állapot mentése Az alkalmazás bezárul, minden állapot elveszik
Állapot mentés Eszközök az állapotok mentésére: Page state Application state Isolated storage
Életciklus események kezelés OnNavigatedFrom/Deactivated Az oldal és az alkalmazás állapotának mentése OnNavigatedTo/Activated Oldal/alkalmazás állapotának visszaállítása ha tombstoned Closing A felhasználó bezárta az alkalmazást (Vissza gombbal) – nem tárolódik semmi Minden esemény kezelésére 10 másodperc van
Tesztelés Tombstoned állapotból visszatérést nehéz előidézni Az OS dönti el mikor lesz Tombstoned egy alkalmazás Megoldás: Visual Studio beállítások
Launcher/Chooser Beépített alkalmazások elindítása Calendar, Contacts, stb. Launcher: Semmilyen adatot vagy státuszt nem ad vissza Chooser: Van visszatérési érték Launcher/Chooser indításakor az alkalmazás a háttérbe kerül! Szükség esetén állapotmentés
Helymeghatározás Beépített helymeghatározó szolgáltatás: Cella információ, GPS, WiFi Állítható gyakoriság és pontosság Gyakoriság: méterben megadva (movement threshold) Pontosság: Default/HighAccuracy (használt eszközök) Energiafogyasztás
Térkép Bing maps vezérlő Regisztrálni kell: Rajzolhatunk rá Location / Routes / Imagery / Traffic API Ingyenes, kivéve „traffic info”
Adattárolás IsolatedStorageSettings IsolatedStorageFile Helyi adatbázis
Legegyszerűbb tárolási mód Kulcs – érték párok eltárolása Lehetséges felhasználás: in-memory cache-ként Tipikus felhasználás: oldalak elrendezései, felhasználói beállítások Settings
File File-ok tárolása Méretre nincs korlátozás (ha a szabad hely<10%: értesítés) Hozzáférés csak a saját könyvtárához. Speciális könyvtárak: Media – Zenelejátszás, album képek ShellContent – Csempe képek Transfers - BackgroundFileTransfer letöltései
Local DB Összetartozó adatok tárolása Elsődleges kulcsok / indexek / idegen kulcsok Nincs SQL Service Elérés: LINQ to SQL (nem kell T-SQL-t írni)
Code first
Frissítés DatabaseSchemaUpdater egyszerű változtatásokat tesz lehetővé a meglévő sémán Az alábbi objektumok hozzáadása támogatott Tábla Oszlop Index Külső kulcs A séma változtatás tranzakcionális
Csempék Egyedivé tehető a főmenü Bármit ki lehet tenni a főmenüre Funkciók gyors elérése (kapcsolatok elérése, sms, hívás) Több csempe alkalmazásonként Create / Update / Delete / Query Az alkalmazás egy URI-ját indítja el Dinamikus tartalom (számláló, megjelenített képek váltogatása)
Élő csempék felépítése Csempe előnézete: Szám (1-99) Cím (15) Háttérkép (173x173) Csempe hátoldala: Tartalom szöveg (40) Cím (15) Háttérkép (173x173)
Csempék kezelése
Push notification A felhasználók értesítése akkor is amikor nem fut az alkalmazás Poll-ing helyett, alkalmazás aszinkron, azonnali értesítésére Egyszerű HTTP és XML kommunikáció Kis adatforgalom Alacsony akkutöltöttség esetén kikapcsol
Notification jelzések Toast 10 másodpercig látható Ha nem fut az alkalmazás: toast megjelenítés Tile, átírható: Háttér Számláló Alkalmazás név Ha fut az alkalmazás akkor is megjön Raw Nincs külön jelzés Csak ha fut az alkalmazás, egyébként elvész az értesítés Ha nem fut az alkalmazás nem látható
Architektúra Cloud Service Windows Phone 7 WNS
Korlátozások Csempe értesítés: < 80 KB, < 30 sec Nyers adat értesítés: < 1 KB Toast értesítés: karakter Egy csatorna alkalmazásonként Napi 500 értesítés csatornánként Beregisztrált tanusítvánnyal korlátlan Ingyenes 30 csatorna telefononként
Notification üzenet
DEMO Push notification
Background agents Az alkalmazás indításakor lesznek inicializálva Különálló, lekorlátozott processz Ismétlődő agent 30 percenként 25 másodperc Tipikus használat: inkrementális frissítés Resource-intensive agent Nem akkuról megy, nem mobilhálózatról, 10 perc Tipikus használat: adatszinkronizáció
Időzített értesítés Riasztás (ébresztő) és emlékeztető kezelés Hasonló a beépített alkalmazásokhoz Operációs rendszer biztosítja a szolgáltatást Korlátok: 1 perces pontosság 50 időzített értesítés alkalmazásonként
Riasztás vs emlékeztető Emlékeztető (reminder) • Modális • Snooze (késleltetés) • Dismiss (leállítás) • Egyedi hang megadható • Alkalmazás start képernyő • No stacking • Több információ • Snooze (késleltetés) • Dismiss (leállítás) • Telefonon beállított értesítési hang • Alkalmazás elindul adott URI-val • Más emlékeztetőkkel együtt Riasztás (alarm)