Progresszív webappok és service workerek

Slides:



Advertisements
Hasonló előadás
HTML enhanced for web apps! Fodor Krisztián
Advertisements

Windows Virtualizáció
RESTful Web Service tesztelése
DISPLAY HIRDETÉSEK. DISPLAY HIRDETÉSEK Fontos a technológiai háttér AZ ONLINE HIRDETÉSEK ELŐNYEI Real-time menedzselhető Mérhető Targetálható Interaktív.
JQuery 8. előadás.
Virtualizált Biztonságos BOINC Németh Dénes Deák Szabolcs Szeberényi Imre.
Adatbázis gyakorlat 1. Szerző: Varga Zsuzsanna ELTE-IK (2004) Budapest
Többszálúság a böngészőben, avagy merjünk-e Javascriptben programot írni? Farkas Máté Budapest.js meetup
Hálózati és Internet ismeretek
HISMobile ® – Kórház a zsebben. Háttér  Piaci szituáció és igény  Az orvosok szeretnék elérni a betegeik adatait bárhonnan és bármikor (ágy mellől,
Windows 7: Tippek, trükkök
Új online technológiák: lehetőségek és kihívások Kerese István Fejlesztési platform üzletág igazgató Microsoft Magyarország
Backend: Gyors és olcsó(?) ÁRVAI ZOLTÁN KITCHEN BUDAPEST.
Client Access Server. Autodiscovery service Availability service (EWS) Offline Address Book (OAB) service Activesync service Outlook Web Access Public.
WordLearner.com -- Learn or Teach Words in Almost Any Language WordLearner.com online és offline nyelvoktatás mobiltelefonon és interneten Benedek Balázs.
Kőnig Tibor főmérnök Microsoft Magyarország. Ma a vállalatok elsősorban olyan szoftvereket használnak, amelyeket maguk futtatnak ez a helyben telepített.
Tectia MobileID Express – Kétfaktoros erős autentikáció – 5 percen belül üzemkészen! január 16.
mLearning megoldások Moodle környezetben
Programozás III KOLLEKCIÓK 2..
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Megoldás Felhő szolgáltatások és Windows 7.
Böngésző programok (Böngészés).
Elektronikus levelezés
Module 1: A Microsoft Windows XP Professional telepítése
WEB MES (webes gyártásirányító rendszer)
Hibrid felhő Privát-, publikus és hoster felhők összekapcsolása
Windows Server 2012 Kiadások, licencelés, lehetőségek
Exchange Server 2007 Client Access Role
Információ és kommunikáció Szilágyi András. Követelmények A cd-n az anyag a következő részeket fedte le: Kliensprogramok, letöltés-vezérlők Kliensprogramok,
Orovecz János Tartalomjegyzék  Az Ajax története  HTTP-kérések és válaszok  XMLHttp-kérések  Egyéb Ajax technika  XML.
mLearning - A Moodle használata mobil eszközökön
XHTML 1. óra. Miért térjünk át HTML-ről XHTML- re? HTML-szabványban tartalom és forma összemosódott HTML 4.0 szabványban stíluslapok használatát javasolták.
Segédlet vizuális programozáshoz Kovács László
Az internetes keresőkben a felhasználó az őt érdeklő szavakra, adatokra kereshet rá egy általában egyszerű oldalon, egy beviteli mező és egyéb szűrési.
Gábor Dénes Főiskola Rendszertechnikai Intézet
APEX BMF, II. félév.
3. előadás.  Apache szerver tudnivalók  Az index.php .htaccess – web-szerverünk beállításai  Konfigurációs állományok  Adatbázis kapcsolódás beállítása.
Web Architecture. Development of Computing Architectures Monolithic mainframe programming Client Server Real Client Server Web Programming.
Mobil kliens az integrációban Magic XPA mobil kliens a SAP és CRM alkalmazásokhoz.
Varga Viktor – G36ECF 1/5 Vendéglátói szoftverek sajátosságai Varga Viktor.
Web-alapú humán lekérdező rendszer
Müller László vezető fejlesztő EQL Soft Informatikai és Tanácsadó Kft.
Óravázlat Készítette: Toldi Miklós
A teljes infrastruktúra egységesített felügyelete és védelme.
OKOSTELEFON KÖZÉPRÉTEG, VALÓS IDEJŰ TELJESEN ELOSZTOTT ADATFELDOLGOZÁS
Hasznos mobilos alkalmazások Mobilos alkalmazások általában Példa ELTE tanrend Készítette: Kozma Réka.
Térképes Alkalmazásfejlesztés Firefox OS rendszeren.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Hogyan készítheti el egy laikus egy nap alatt az INFOÉRA konferencia programlistázó és értékelő mobilalkalmazását? Menyhárt László Gábor Zamárdi,
Spanyolország gyöngyszeme: GRANADA Egy hobby portál kivitelezése.
ASZTALI GÉPEK KONTRA TABLETEK Melyiket válasszam? Készítette: Kiss László IALMGR)
A Windows Server 2003 termékcsalád A Windows Server 2003 termékcsaládnak 4 tagja van: Windows Server 2003, Standard Edition Windows Server 2003, Enterprise.
A web site minősítése Források: Bokor Péter szakdolgozata (2002) és a benne megadott hivatkozások: Dotkom Internet Consulting: Üzleti weboldalak elemzése,
DR+HA+B/R+Azure Gál Tamás Datacenter Technical Specialist
Ingyenes, online technikai kurzusok Microsoft Virtual Academy.
Windows 10 áttekintés és bevezetés Windows 10 áttekintés rendszergazdáknak Mi változott a Windows 7 óta?
Felhőalapú adattárolás Hogy tárolhatunk adatokat „felhő” szolgáltatás segítségével?
AZURE RÉGIÓK Szoftver szolgáltatás SaaS Platform szolgáltatás PaaS Infrastruktúra szolgáltatás IaaS.
Alkalmazásfejlesztés F#-ban Dunaújvárosi Főiskola Kiss Gyula mérnökinformatikus hallgató Nemzeti Tehetség Program Tehetségútlevél Program „NTP-TÚP ”
PHP függvények MySQL adatbázisok kezelésére
Fülemüle informatika tehetségkutató verseny
György-Ambrus Bernadett 8.a Felkészítő tanár neve: Salamon Róza
Híd a Windows folyón Balint Farkas Technical Evangelist Microsoft
Neumann János Informatikai Kar
Novell+Hálózat Szekció
Hálózati struktúrák, jogosultságok
CONNECTRA rendszer bevezetése
Internet és kommunikáció
Google Data Studio A Bétán túl Pere Patrícia HWSW mobile!
Adatforgalom és lokális adattárolás PWA-k esetében
Előadás másolata:

Progresszív webappok és service workerek

Témák PWA áttekintés Service worker IndexedDB Local Notification Push notification Alkalmazás főképernyőhöz adása (A2HS) Lighthouse Alkalmazásboltok Progresszív webappok 2019.02.18.

Amit ma el fogunk készíteni Balog Richárd balog.richard@autsoft.hu

Mi is az a PWA? Megbízható Gyors Megnyerő Közelebb hozza egymáshoz a mobil és webalkalmazásokat, jobb felhasználói élményt biztosít Megbízható Gyors Megnyerő Inkább egy ellenőrző lista, mint sem egy konkrét meghatározás Google szerinti definíció Ezzel a 3 előnnyel érdemli ki, hogy a felhasználó a főképernyőjére tűzze Progresszív webappok 2019.02.18.

Megbízható Zökkenőmentes működést biztosít minden körülmény mellett Online és offline egyaránt — elérhető funkciók eltérhetnek egymástól Kifinomultabb cache kezelés Böngésző- és eszközfüggetlen Mindig friss Biztonságos (HTTPS) Progresszív webappok 2019.02.18.

Gyors Gyors első betöltés (1-2 másodperc) (First meaningful paint) Kis késleltetéssel reagál a felhasználói interakciókra Gyors első betöltés (1-2 másodperc) (First meaningful paint) Folyékony animációk, görgetés Gombnyomás és egyéb események gyorsan eredményeznek látható változást Progresszív webappok 2019.02.18.

Megnyerő Főképernyőre telepíthető (Windows-on desktop app) Nagyobb elköteleződést ér el a felhasználóknál mint egy átlagos webalkalmazás Főképernyőre telepíthető (Windows-on desktop app) Egyedi ikon, töltő képernyő Teljes képernyős mód mobilon Rendszerértesítések (web notifications) Szívesebben és többet fogják használni a felhasználók Progresszív webappok 2019.02.18.

Hogyan érhetjük el ezeket? Service worker Best practices Lighthouse Jól átgondolt és felépített plusz funkciók (pl. megfelelő mennyiségű és aktuális értesítések) Progresszív webappok 2019.02.18.

Service worker Sokkal kifinomultabb cache kezelés Proxy-ként működik a webalkalmazás és a szerver között Verziózott, frissíthető Életciklus alapú működés Domainhez kötött Csak HTTPS felett (+ localhost) Progresszív webappok 2019.02.18.

Életciklus Progresszív webappok 2019.02.18.

Regisztrálás A service worker (SW) js fájljának regisztrálása Ellenőriznünk kell, hogy a böngészőben elérhető-e az API Elvégezhető akár minden oldalbetöltésre Scope a domain egy részét fedi le a SW js fájl helyétől is függően Scope-onként 1 SW lehet Ha egy mappaban van a fajl akkor annal tagabb domain nem lathat, de a scope-al meg tovabb is szukitheto Progresszív webappok 2019.02.18.

Regisztrálás Progresszív webappok 2019.02.18. if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/sw.js', { scope: '/' }).then( function(registration) { // Sikeres regisztrálás }, function(err) { // Sikertelen regisztrálás } ) })} Progresszív webappok 2019.02.18.

Telepítés Cache létrehozása Cache-elendő útvonalak meghatározása Innentől az események lekezelése EventListener-ekkel történik Cache létrehozása Cache-elendő útvonalak meghatározása Ezeken felül tetszőleges műveletek elvégezhetők még Progresszív webappok 2019.02.18.

Telepítés Progresszív webappok 2019.02.18. self.addEventListener('install', function(event) { event.waitUntil( caches.open('test-cache-v1') .then(function(cache) { return cache.addAll([ '/', '/scripts/main.js', '/styles/main.css' ]); }) );}); self a Service Worker globális kontextusát jelenti Progresszív webappok 2019.02.18.

Fetch Kimenő kérések elkapása Cache-ből kiszolgálás, vagy továbbengedés A cache itt is módosítható, kiegészíthető új kérésekkel Progresszív webappok 2019.02.18.

Frissítés A böngésző az SW js fájlt minden oldal betöltésnél lekéri, akár 1 bájt eltérés esetén is új verziónak tekinti Az új verzió először install fázisba kerül Utána waiting állapotban van, addig amíg van az oldalnak megnyitott példánya, mivel azokat még a régi verzió felügyeli Ezután kerülhet activated állapotba, onnantól ő felügyel -> cache karbantartás Progresszív webappok 2019.02.18.

Web app manifest Progresszív webappok 2019.02.18.

Használhatom már? Igen A tervezésénél fontos szempont volt a visszafelé kompatibilitás Plusz rétegként épül az alkalmazás fölé Is service worker ready? Progresszív webappok 2019.02.18.

Használhatom már? Progresszív webappok 2019.02.18.

Kódoljunk végre! Progresszív webappok 2019.02.18.

https://github.com/ricsard/hwsw-pwa-demo https://goo.gl/voXSPE https://github.com/ricsard/hwsw-pwa-demo https://goo.gl/voXSPE Progresszív webappok 2019.02.18.

IndexedDB Semmi köze a Web storage-hoz Objektum orientált adatbázis (kulcs-érték párok) Strukturált adatok tárolására való Tranzakció alapú Kulcsok alapján indexelt Aszinkron működésű Verziózott Perzisztens (többé-kevésbé) Domainhez kötött Progresszív webappok 2019.02.18.

Tárhely A tárhely limitált és jelentős különbségek vannak böngészők / platformok között Bináris adatok tárolására is alkalmas (de iOS-en pl. nincs Blob) Perzisztens amíg a felhasználó / böngésző / rendszer ki nem törli iOS-en 50 MB a limit Androidon alapból nem korlátozott Az írást bármikor megtagadhatja a böngésző pl. helyhiány miatt Progresszív webappok 2019.02.18.

Indexek Auto increment Összetett kulcsok Egyedi kulcsok (Unique) Nem egyedi kulcsok (Multi Entry) Frissíthetők db verzió váltással Progresszív webappok 2019.02.18.

Teljesítmény Structured clone algoritmus (fő szálon fut) Nem érdemes nagy object-eket tárolni értékként Indexeket korlátozzuk azokra a mezőkre amik szerint keresni fogunk majd Progresszív webappok 2019.02.18.

Érdemes észben tartani #1 A különböző db verziók közötti átmeneteket nekünk kell kezelni, a már tárolt adatokat az új struktúrára kell alakítani Az adatok bármikor eltűnhetnek Az írás sikeressége egyáltalán nem garantált Fontos a megfelelő hibakezelés Platformonként változhatnak a támogatott adatformátumok Privát ablakban nem lehet írni (vagy egyáltalán el sem érhető, pl. Edge) Progresszív webappok 2019.02.18.

Érdemes észben tartani #2 A natív api használata körülményes és nem Promise alapú Érdemes külső könyvtárral használni (pl. Dexie.js) Progresszív webappok 2019.02.18.

Használhatom már? Progresszív webappok 2019.02.18.

Kódoljunk végre! Progresszív webappok 2019.02.18.

Local Notification Rendszerértesítések böngészőből Service worker nélkül is elérhető Sok paramétere létezik (title, body, icon, vibrate, stb...) Kattintás esemény lekezelhető További action-ök is felvehetők (nem támogatott mindenhol) Progresszív webappok 2019.02.18.

Local Notification használata Engedélyt kell kérni a felhasználótól (ezt vissza is vonhatja bármikor) if ('Notification' in window) { if (Notification.permission === 'granted') { new Notification('Hello HWSW!', {body: 'Awesome notification demo'}); } else if (Notification.permission !== 'denied') { Notification.requestPermission(function (permission) { if (permission === 'granted') { } }); Progresszív webappok 2019.02.18.

Érdemes észben tartani Nem minden paraméter támogatott minden böngészőben / rendszeren Az eltüntetésért alapvetően mi felelünk, de a böngészők egy része magától is megteszi ezt (~4 másodperc után) Service worker nélkül is tud feldobni az alkalmazás notificationt, de futnia kell (nem kell, hogy aktív tab legyen) Mindig ellenőrizni kell, hogy van-e engedélyünk notification-t dobni Progresszív webappok 2019.02.18.

Használhatom már? Progresszív webappok 2019.02.18.

Kódoljunk végre! Progresszív webappok 2019.02.18.

Push notification Jóval komplexebb feladat mint a local notification Több api és komponens együttes használatával oldható meg (Notifications API, Push API, Push Service) Nem csak notification lehet a reakció egy push eseményre Szükséges hozzá egy Service worker is Progresszív webappok 2019.02.18.

Web Push működése #1 A böngészők rendelkeznek egy push service-el (külön regisztráció szükséges) Service worker nyújt egy Push Manager interfészt Ezen az interfészen keresztül lehet a böngészőtől kérni a feliratkozást a push service-re Sikeres feliratkozás után megkapjuk az adatokat (pl. a végpontot) Ezt a szerver alkalmazásnak elküldve, képes lesz üzeneteket küldeni a végpontra, amit a böngésző fog továbbítani az alkalmazásnak Progresszív webappok 2019.02.18.

Web Push működése #2 Üzenet érkezése esetén a böngésző generál egy Push Event-et Felébreszti azt a Service worker-t aki az adott feliratkozást létrehozta a Push Manager-en keresztül A Service worker-ben lekezeljük a push eseményt (pl. notification-t dobunk) Progresszív webappok 2019.02.18.

Web Push működése #3 Progresszív webappok 2019.02.18.

Push notification használata Notification létrehozása pontosan ugyanúgy, mint az előző részben Push esemény elkapása a Web push részben leírtak szerint Ezek kombinációjával pedig létrejön a push notification Progresszív webappok 2019.02.18.

Push notification használata // SW.js-ben self.addEventListener('push', function(e) { e.waitUntil( self.registration .showNotification('Push notification', {body: body: 'Push notification arrived!'}) ); }); // app.js-ben function subscribeToPush() { navigator.serviceWorker.ready.then(function(reg) { reg.pushManager.subscribe().then(function(sub) { console.log('Endpoint URL: ', sub.endpoint); }).catch(function(e) { console.error('Unable to subscribe to push', e); } Progresszív webappok 2019.02.18.

Érdemes észben tartani A push üzenet best effort jellegű (érdemes timeout-ot megadni, úgyis többnyire idő érzékeny az üzenet) Lehet plusz adatot küldeni az üzenet mellé (payload) de erősen limitált a mérete (pl. 2kb Firebase Cloud Messaging esetén) A payload titkosítása kötelező (enélkül egyszerűen csak nem továbbítja azt a mezőt a push service) Minden böngésző saját push service-t használ, mindegyikhez kell kulcsot kérni, és a böngészőnek megfelelően kell küldeni a push üzenetet Léteznek szolgáltatások, amik megkönnyítik ezt (pl. OneSignal) Progresszív webappok 2019.02.18.

Használhatom már? Safari (desktop) esetében csalóka az ábra, tud push üzeneteket fogadni, de máshogy mint a többi böngésző Progresszív webappok 2019.02.18.

Kódoljunk végre! Progresszív webappok 2019.02.18.

Telepíthető PWA A web alkalmazások hozzáadhatók a főképernyőhöz (A2HS – Add to home screen) Ez kézzel bármikor megtehető, de bizonyos feltételek teljesítése mellett a böngésző ezt fel is ajánlhatja a felhasználónak Progresszív webappok 2019.02.18.

Feltételek HTTPS Van regisztrált Service worker-e Van manifest fájl, a megfelelő mezők ki vannak töltve Van alkalmazás ikon Böngészőnként változnak (iOS nem támogatja): Chrome, Firefox, Edge Progresszív webappok 2019.02.18.

Telepítés menete #1 A böngészők nem (vagy legalábbis nem feltétlen) gondoskodnak arról, hogy értesítsék a felhasználót arról, hogy telepíthető az alkalmazás Progresszív webappok 2019.02.18.

Telepítés menete #2 Progresszív webappok 2019.02.18.

Használhatom már? Nem találtam pontos leírást, ez a leírás saját tapasztalatok alapján készült Chrome-on régóta elérhető és nagyjából az egyetlen böngésző ahol ez automatikusan és jól működik (csak mobilon, bár desktopon külön flaggel bekapcsolható a funkció) iOS Safari csak a kézzel telepítést támogatja Windows-on a Microsoft Store-on keresztül lehet PWA-t telepíteni, az Edge nem dobott fel semmit a demo alkalmazásnál Progresszív webappok 2019.02.18.

Kódoljunk végre! Progresszív webappok 2019.02.18.

Lighthouse Automatizált weboldal minőség ellenőrző Átlátható jelentést generál az oldalról Nem csak sok szempontból vizsgál, de tippeket is ad a problémák megoldására CI-ba köthető Google által fejlesztett Progresszív webappok 2019.02.18.

Lighthouse Progresszív webappok 2019.02.18.

Alkalmazásboltok Regisztráció szükséges (App Store, Google Play fizetős) Közvetlen nem lehet feltölteni a PWA-t, kell egy wrapper köré (https://www.pwabuilder.com) Nagyon jó részletes leírás a nehézségekről és magáról a folyamatról: https://medium.freecodecamp.org/i-built-a-pwa-and-published-it-in- 3-app-stores-heres-what-i-learned-7cb3f56daf9b Progresszív webappok 2019.02.18.

Kérdések? Köszönöm a figyelmet! Progresszív webappok 2019.02.18.