97
#FirefoxOS Front In Fortaleza

Front In Fortaleza - WebAPIs

Embed Size (px)

DESCRIPTION

Palestra sobre Open Web APIs + Firefox OS + Cordova

Citation preview

Page 1: Front In Fortaleza - WebAPIs

!

#FirefoxOS

Front In Fortaleza !

Page 2: Front In Fortaleza - WebAPIs

Fábio Magnoni

@FabioMagnoni

#FirefoxOS

Page 3: Front In Fortaleza - WebAPIs
Page 4: Front In Fortaleza - WebAPIs
Page 5: Front In Fortaleza - WebAPIs

http://www.unrealengine.com/html5/

Page 6: Front In Fortaleza - WebAPIs
Page 7: Front In Fortaleza - WebAPIs
Page 8: Front In Fortaleza - WebAPIs
Page 9: Front In Fortaleza - WebAPIs
Page 10: Front In Fortaleza - WebAPIs
Page 11: Front In Fortaleza - WebAPIs
Page 12: Front In Fortaleza - WebAPIs

Meidin Camelô…

Page 13: Front In Fortaleza - WebAPIs

38 bilhões de dispositivos !conectamos !

em 2020

ABI Research - 2013-05-09 - http://j.mp/38billion!

Page 14: Front In Fortaleza - WebAPIs

Você deveria começar com a web…

Page 15: Front In Fortaleza - WebAPIs
Page 16: Front In Fortaleza - WebAPIs
Page 17: Front In Fortaleza - WebAPIs

Mobile Internet Users Desktop

Page 18: Front In Fortaleza - WebAPIs

Plataformas !

Page 19: Front In Fortaleza - WebAPIs

A Web está ganhando!!!

Page 20: Front In Fortaleza - WebAPIs

A Web é a Plataforma

Page 21: Front In Fortaleza - WebAPIs

Vamos começar com o que você merece!

Page 22: Front In Fortaleza - WebAPIs
Page 23: Front In Fortaleza - WebAPIs

Feito com a Web

Usando HTML5, CSS3 e JavaScript!Com uma série de APIs!para desenvolver apps.!

Page 24: Front In Fortaleza - WebAPIs
Page 25: Front In Fortaleza - WebAPIs

É open source

Page 26: Front In Fortaleza - WebAPIs
Page 27: Front In Fortaleza - WebAPIs

GONK

Page 28: Front In Fortaleza - WebAPIs

Infrastructure Layer (Gonk)

RILd

AccelGPSCamera

Power Mgt

Audio /

Video

Open GLES

Input / Touch

Open Source Libraries

Bluetooth USB

LEDs HW

Buttons

Vibrator

OEM Libs

Device’s Operationg System

Linux Kernel OEM Drivers OEM Modem Firmware

Page 29: Front In Fortaleza - WebAPIs

GECKO

Page 30: Front In Fortaleza - WebAPIs

Open Web Platform Interface

Contacts

Sensors GeoLocation

Battery Vibration

Camera Media

Storage WebRTC

Alarms System

Messages

System XHR

NFC Bluetooth

WebTelephony WebSMS/MMSSettings

Gecko Engine

Security

Web APIs

Open WebApps APIs

Network Connections

/ UICC

mozPay /Trusted

UI

WebActivities

HTML5 APIs

Page 31: Front In Fortaleza - WebAPIs

GAIA

Page 32: Front In Fortaleza - WebAPIs

JS Libraries For Developers

Core - Certified

Apps System

AppUtility

Libraries Building Blocks

GaiaHosted Apps

Trusted Packed Apps

Application Layer HTML5 / JS / CSS

Page 33: Front In Fortaleza - WebAPIs

{ "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 34: Front In Fortaleza - WebAPIs

Verificador de Manifestohttp://appmanifest.org/

Page 35: Front In Fortaleza - WebAPIs

Empacotadas vs. Hospedadas

Page 36: Front In Fortaleza - WebAPIs

Segurança

Page 37: Front In Fortaleza - WebAPIs

Apps

Conteúdo Web

Conteúdos Web Padrão

Web Apps Privilegiadas

Mais acesso, mais responsabilidade

Web Apps Instaladas

Web App Normal

Web App Certificada

Apps Críticas ao dispositivo

Page 38: Front In Fortaleza - WebAPIs

Permissões

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

Page 39: Front In Fortaleza - WebAPIs

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

Page 40: Front In Fortaleza - WebAPIs
Page 41: Front In Fortaleza - WebAPIs

WEB APIs

Page 42: Front In Fortaleza - WebAPIs

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 (PRA GALERA)

Page 43: Front In Fortaleza - WebAPIs

API STATUS DA BATERIA

Page 44: Front In Fortaleza - WebAPIs

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 45: Front In Fortaleza - WebAPIs

NOTIFICAÇÃO

Page 46: Front In Fortaleza - WebAPIs

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

Page 47: Front In Fortaleza - WebAPIs

API ORIENTAÇÃO DE TELA

Page 48: Front In Fortaleza - WebAPIs

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

Page 49: Front In Fortaleza - WebAPIs

API VIRAÇÃO

Page 50: Front In Fortaleza - WebAPIs

// 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 51: Front In Fortaleza - WebAPIs

API INFO DE REDE

Page 52: Front In Fortaleza - WebAPIs

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

Page 53: Front In Fortaleza - WebAPIs

API DE PROXIMIDADE

Page 54: Front In Fortaleza - WebAPIs

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 55: Front In Fortaleza - WebAPIs

API EVENTOS ILUMINAÇÃO

Page 56: Front In Fortaleza - WebAPIs

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

Page 57: Front In Fortaleza - WebAPIs

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 58: Front In Fortaleza - WebAPIs

Device Storage API

Browser API

TCP Socket API

Contacts API

systemXHR

WEB APIS (PRIVILEGIADAS)

Page 59: Front In Fortaleza - WebAPIs

DEVICE STORAGE

Page 60: Front In Fortaleza - WebAPIs

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

Page 61: Front In Fortaleza - WebAPIs

// "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 62: Front In Fortaleza - WebAPIs

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 63: Front In Fortaleza - WebAPIs

API DE CONTATO

Page 64: Front In Fortaleza - WebAPIs

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 65: Front In Fortaleza - WebAPIs

Apps Certificadas = Apps SO

Page 66: Front In Fortaleza - WebAPIs

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 67: Front In Fortaleza - WebAPIs

WEB ACTIVITIES

Page 68: Front In Fortaleza - WebAPIs
Page 69: Front In Fortaleza - WebAPIs

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 70: Front In Fortaleza - WebAPIs

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

Page 71: Front In Fortaleza - WebAPIs

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

Page 72: Front In Fortaleza - WebAPIs

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 73: Front In Fortaleza - WebAPIs

Como instalar App da 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 74: Front In Fortaleza - WebAPIs

Cordova & Phonegap

Page 75: Front In Fortaleza - WebAPIs

Implementação das APIs

• Câmera • Contatos • Dispositivo • Device-motion • Geolocation • Orientação • Vibração

Page 76: Front In Fortaleza - WebAPIs

Se preparando

$ sudo npm install -g cordova$ cordova create hello com.example.hello HelloWorld$ cd hello$ cordova platform add firefoxos$ cordova prepare firefoxos

Page 77: Front In Fortaleza - WebAPIs

API de Camera

$ cordova plugin add org.apache.cordova.camera!!//Cordova codenavigator.camera.getPicture(function (src) { var img = document.createElement('img'); img.id = 'slide'; img.src = src; }, function () {}, { destinationType: 1});!

Page 78: Front In Fortaleza - WebAPIs

Firefox OS App Manager + Simulador (1.2+)

Page 79: Front In Fortaleza - WebAPIs

Firefox Developer Tools

Page 80: Front In Fortaleza - WebAPIs

\o/ Documentos e Ferramentas \o/

developer.mozilla.org

Page 81: Front In Fortaleza - WebAPIs

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

Page 82: Front In Fortaleza - WebAPIs

FIREFOX OS BOILERPLATE APP

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

Page 83: Front In Fortaleza - WebAPIs

https://hacks.mozilla.org

Mozilla Developer Blog

Page 85: Front In Fortaleza - WebAPIs

Prototipe com JSFiddle• Insira /webapp.manifest

para instalar o app no simulador do Firefox OS

!

• Insira /fxos.html para ter uma página de instalação como um app Firefox OS hospedado

Page 86: Front In Fortaleza - WebAPIs

http://buildingfirefoxos.com/

Page 87: Front In Fortaleza - WebAPIs

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

Page 88: Front In Fortaleza - WebAPIs

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

Page 89: Front In Fortaleza - WebAPIs

https://marketplace.firefox.com/

Page 90: Front In Fortaleza - WebAPIs

https://appmaker.mozillalabs.com/

App Maker

Page 91: Front In Fortaleza - WebAPIs
Page 92: Front In Fortaleza - WebAPIs
Page 93: Front In Fortaleza - WebAPIs
Page 94: Front In Fortaleza - WebAPIs

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

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

Page 96: Front In Fortaleza - WebAPIs
Page 97: Front In Fortaleza - WebAPIs

Fábio Magnoni

@FabioMagnoni

@mozhacks