WebAPIs + Brick - WebBR2013

69
#FirefoxOS WEB.BR 2013

description

Palestra dada no WebBR2013 sobre WebAPIs, ferramentas para desenvolvimento e Web Components (Brick).

Transcript of WebAPIs + Brick - WebBR2013

Page 1: WebAPIs + Brick - WebBR2013

!

#FirefoxOS

WEB.BR 2013 !

Page 2: WebAPIs + Brick - WebBR2013

Fábio Magnoni

@FabioMagnoni

#FirefoxOS

Page 3: WebAPIs + Brick - WebBR2013

Construindo Apps

Page 4: WebAPIs + Brick - WebBR2013

Open Web Apps

Page 5: WebAPIs + Brick - WebBR2013

A Plataforma é a Web

Page 6: WebAPIs + Brick - WebBR2013

Mobile Internet Users Desktop

Page 7: WebAPIs + Brick - WebBR2013

Plataformas

Page 8: WebAPIs + Brick - WebBR2013

{ "version": "1.0", "name": “Mozilla", "description": "Exciting Open Web development action!", "icons": { "16": "/img/icon-16.png", "48": "/img/icon-48.png", "128": "/img/icon-128.png" }, "developer": { "name": "Mozilla Labs", "url": "http://mozillalabs.com" }, "installs_allowed_from": ["*"], "appcache_path": "/cache.manifest", "locales": { "es": { "description": "¡Acción abierta emocionante del desarrollo del Web!", "developer": { "url": "http://es.mozillalabs.com/" } }, "pt-BR": { "description": "Descrição da sua aplicação!", "developer": { "url": "http://pt-BR.mozillalabs.com/" } } }, "default_locale": "en" }

Page 9: WebAPIs + Brick - WebBR2013

VERIFICADOR DE MANIFESTOhttp://appmanifest.org/

Page 10: WebAPIs + Brick - WebBR2013

Packaged vs. Hosted Apps

Page 11: WebAPIs + Brick - WebBR2013

WebAPIs

Page 12: WebAPIs + Brick - WebBR2013

Segurança

Page 13: WebAPIs + Brick - WebBR2013

Aplicações

Conteúdo Web

Conteúdo Web comum

Apps Web Privilegiadas

Mais acesso, mais responsabilidades

App Web Instalada

Uma App Web comum

App Web Certificada

Apps críticas aos aparelho (hardware)

Page 14: WebAPIs + Brick - WebBR2013

Permissões

https://developer.mozilla.org/en-US/Apps/Developing/App_permissions

Page 15: WebAPIs + Brick - WebBR2013

"permissions": { "contacts": { "description": "Required for autocompletion in the share screen", "access": "readcreate" }, "alarms": { "description": "Required to schedule notifications" } }

Page 16: WebAPIs + Brick - WebBR2013

WEB APIs

Page 17: WebAPIs + Brick - WebBR2013

Vibration API (W3C)

Screen Orientation

Geolocation API

Mouse Lock API (W3C)

Open WebApps

Network Information API (W3C)

Battery Status API (W3C)

Alarm API

Web Activities

Push Notifications API

WebFM API

WebPayment

IndexedDB (W3C)

Ambient light sensor

Proximity sensor

Notification

WEB APIS (PARA TODOS)

Page 18: WebAPIs + Brick - WebBR2013

API STATUS DA BATERIA

Page 19: WebAPIs + Brick - WebBR2013

var battery = navigator.battery; if (battery) { var batteryLevel = Math.round(battery.level * 100) + "%", charging = (battery.charging)? "" : "not ", chargingTime = parseInt(battery.chargingTime / 60, 10, dischargingTime = parseInt(battery.dischargingTime / 60, 10); // Set events battery.addEventListener("levelchange", setStatus, false); battery.addEventListener("chargingchange", setStatus, false); battery.addEventListener("chargingtimechange", setStatus, false); battery.addEventListener("dischargingtimechange", setStatus, false); }

Page 20: WebAPIs + Brick - WebBR2013

NOTIFICAÇÃO

Page 21: WebAPIs + Brick - WebBR2013

var notification = navigator.mozNotification; notification.createNotification( "See this", "This is a notification", iconURL );

Page 22: WebAPIs + Brick - WebBR2013

API ORIENTAÇÃO DE TELA

Page 23: WebAPIs + Brick - WebBR2013

// Portrait mode: screen.mozLockOrientation("portrait"); /* Possible values: "landscape" "portrait" "landscape-primary" "landscape-secondary" "portrait-primary" "portrait-secondary" */

Page 24: WebAPIs + Brick - WebBR2013

VIBRATION API

Page 25: WebAPIs + Brick - WebBR2013

// Vibrate for one second navigator.vibrate(1000); // Vibration pattern [vibrationTime, pause,…] navigator.vibrate([200, 100, 200, 100]); // Vibrate for 5 seconds navigator.vibrate(5000); // Turn off vibration navigator.vibrate(0);

Page 26: WebAPIs + Brick - WebBR2013

VISIBILIDADE DA PÁGINA

Page 27: WebAPIs + Brick - WebBR2013

document.addEventListener("visibilitychange", function (event) { if (document.hidden) { console.log(event."App is hidden"); } else { console.log(event."App has focus"); } });

Page 28: WebAPIs + Brick - WebBR2013

NETWORK INFO API

Page 29: WebAPIs + Brick - WebBR2013

var connection = window.navigator.mozConnection, online = connection.bandwidth > 0, metered = connection.metered;

Page 30: WebAPIs + Brick - WebBR2013

PROXIMIDADE

Page 31: WebAPIs + Brick - WebBR2013

window.addEventListener("deviceproximity", function (event) { // Current device proximity, in centimeters console.log(event.value); // The maximum sensing distance the sensor is // able to report, in centimeters console.log(event.max); // The minimum sensing distance the sensor is // able to report, in centimeters console.log(event.min); });

Page 32: WebAPIs + Brick - WebBR2013

AMBIENT LIGHT EVENT

Page 33: WebAPIs + Brick - WebBR2013

window.addEventListener("devicelight", function (event) { // The level of the ambient light in lux console.log(event.value); });

Page 34: WebAPIs + Brick - WebBR2013

window.addEventListener("devicelight", function (event) { // The lux values for "dim" typically begin below 50, // and the values for "bright" begin above 10000 console.log(event.value); });

Page 35: WebAPIs + Brick - WebBR2013

Device Storage API

Browser API

TCP Socket API

Contacts API

systemXHR

WEB APIS (APPS PRIVILEGIADAS)

Page 36: WebAPIs + Brick - WebBR2013

DEVICE STORAGE

Page 37: WebAPIs + Brick - WebBR2013

var deviceStorage = navigator.getDeviceStorage("videos");

Page 38: WebAPIs + Brick - WebBR2013

// "external", "shared", or "default". deviceStorage.type; // Add a file - returns DOMRequest with file name deviceStorage.add(blob); // Same as .add, with provided name deviceStorage.addNamed(blob, name); // Returns DOMRequest/non-editable File object deviceStorage.get(name); // Returns editable FileHandle object deviceStorage.getEditable(name); // Returns DOMRequest with success or failure deviceStorage.delete(name); // Enumerates files deviceStorage.enumerate([directory]); // Enumerates files as FileHandles deviceStorage.enumerateEditable([directory]);

Page 39: WebAPIs + Brick - WebBR2013

var storage = navigator.getDeviceStorage("videos"), cursor = storage.enumerate(); cursor.onerror = function() { console.error("Error in DeviceStorage.enumerate()", cursor.error.name); }; cursor.onsuccess = function() { if (!cursor.result) return; var file = cursor.result; // If this isn't a video, skip it if (file.type.substring(0, 6) !== "video/") { cursor.continue(); return; } // If it isn't playable, skip it var testplayer = document.createElement("video"); if (!testplayer.canPlayType(file.type)) { cursor.continue(); return; } };

Page 40: WebAPIs + Brick - WebBR2013

API DE CONTATOS

Page 41: WebAPIs + Brick - WebBR2013

var addContact = document.querySelector("#add-contact"); if (addContact) { addContact.onclick = function () { var newContact = new MozActivity({ name: "new", // Possibly add-contact in future versions data: { type: "webcontacts/contact", params: { // Will possibly move to be direct properties under "data" giveName: "Fabio", familyName: "Magnoni", tel: "+5519988013586", email: "[email protected]", address: "Campinas", note: “Se tiver cerveja envolvida, pode entrar em contato :)”, company: "Mozilla" } } }); } }

Page 42: WebAPIs + Brick - WebBR2013

Apps Certificadas =

DO SO

Page 43: WebAPIs + Brick - WebBR2013

Dialer !Contacts !Settings !SMS !Web browser !Gallery !Video Player !Music Player !E-mail (POP, IMAP) !Calendar

Alarm Clock !Camera !Notes !First Run Experience !Notifications !Home Screen !Mozilla Marketplace !System Updater !Localization Support

Page 44: WebAPIs + Brick - WebBR2013

WEB ACTIVITIES

Page 45: WebAPIs + Brick - WebBR2013
Page 46: WebAPIs + Brick - WebBR2013

var activity = new MozActivity({ name: "view", data: { type: "image/png", url: ... } });

activity.onsuccess = function () { console.log("Showing the image!"); };activity.onerror = function () { console.log("Can't view the image!"); };

Page 47: WebAPIs + Brick - WebBR2013

{ "activities": { "share": { "filters": { "type": ["image/png", "image/gif"] } "href": "sharing.html", "disposition": "window" } } }

Page 48: WebAPIs + Brick - WebBR2013

var register = navigator.mozRegisterActivityHandler({ name: "view", disposition: "inline", filters: { type: "image/png" } }); register.onerror = function () { console.log("Failed to register activity"); }

Page 49: WebAPIs + Brick - WebBR2013

navigator.mozSetMessageHandler("activity", function (a) { var img = getImageObject(); img.src = a.source.url; // Call a.postResult() or a.postError() if // the activity should return a value });

Page 51: WebAPIs + Brick - WebBR2013

Como Instalar pela WEB

var install app = navigator.mozApps.install(manifestURL); installapp.onsucess = function(data) { //App is installed };installapp.onerror = function() { //App wasn’t installed, info is in // installapp.error.name};

Page 52: WebAPIs + Brick - WebBR2013

APIs Futuras

Page 53: WebAPIs + Brick - WebBR2013

Resource lock API

UDP Datagram Socket API

Peer to Peer API

WebNFC

WebUSB

HTTP-cache API

Calendar API

Spellcheck API

LogAPI

Keyboard/IME API

WebRTC

FileHandle API

Sync API

Page 54: WebAPIs + Brick - WebBR2013

https://marketplace.firefox.com/

Page 55: WebAPIs + Brick - WebBR2013

\o/ Docs e Ferramentas \o/

Page 56: WebAPIs + Brick - WebBR2013

FIREFOX OS BOILERPLATE APP

https://github.com/robnyman/Firefox-OS-Boilerplate-App

Page 57: WebAPIs + Brick - WebBR2013

https://addons.mozilla.org/firefox/addon/firefox-os-simulator/

Page 58: WebAPIs + Brick - WebBR2013

http://buildingfirefoxos.com/

Page 59: WebAPIs + Brick - WebBR2013

http://mozilla.github.io/brick/docs.html

Page 60: WebAPIs + Brick - WebBR2013

ComponentesAppbar !Calendar !Deck !Flipbox !Layout !Slideshow !Slider !Tabbar !Toggle !Tooltip

Page 61: WebAPIs + Brick - WebBR2013

Recursos

Page 62: WebAPIs + Brick - WebBR2013

https://developer.mozilla.org/en-US/docs/WebAPI

Page 64: WebAPIs + Brick - WebBR2013

https://hacks.mozilla.org/category/firefox-os/

Mozilla Developer Blog

Page 65: WebAPIs + Brick - WebBR2013

Precisa de ajuda?

Page 66: WebAPIs + Brick - WebBR2013
Page 67: WebAPIs + Brick - WebBR2013

https://lists.mozilla.org/listinfo/dev-webapps

irc://irc.mozilla.org/ #openwebapps