bringing the open web & apis to mobile devices with firefox os - goto conference, aarhus

82
Bringing the Open Web & APIs to mobile devices with Firefox OS @robertnyman

Upload: robert-nyman

Post on 06-May-2015

1.341 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Bringing the Open Web & APIs to mobile devices with Firefox OS

@robertnyman

Page 2: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 6: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Mozilla is a global non-profit dedicated to putting you in control of your online experience and shaping the future of the Web for the public good

Page 8: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 9: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 10: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 11: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 12: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Using HTML5, CSS and JavaScript together with a number of APIs to build apps and customize the UI.

Firefox OS

Page 13: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

"Movistar to offer the ZTE Open for €69, including €30 of balance for prepaid customers and a 4GB microSD card"

Launch!

Page 16: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Open Web Apps

Page 17: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 18: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 19: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

HTML5 + manifest file (JSON)

Page 20: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

{ "version": "1", "name": "Firefox OS Boilerplate App", "launch_path": "/index.html", "description": "Boilerplate Firefox OS app", "icons": { "16": "/images/logo16.png", "32": "/images/logo32.png", "48": "/images/logo48.png", "64": "/images/logo64.png", "128": "/images/logo128.png" }, "developer": { "name": "Robert Nyman", "url": "http://robertnyman.com" }, "installs_allowed_from": ["*"], "default_locale": "en"}

Page 21: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

MANIFEST CHECKERhttp://appmanifest.org/

Page 22: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Packaged & hosted apps

Page 23: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

WebAPIs

Page 24: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 25: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 26: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Security Levels

Page 27: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Web Content

Regular web content

Installed Web App

A regular web app

Privileged Web App

More access, more responsibility

Certified Web App

Device-critical applications

Page 29: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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

Page 31: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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

REGULAR APIS

Page 32: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

BATTERY STATUS API

Page 33: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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 34: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

NOTIFICATION

Page 35: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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

Page 36: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

SCREENORIENTATION API

Page 37: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

// Portrait mode:screen.mozLockOrientation("portrait");

/* Possible values: "landscape" "portrait" "landscape-primary" "landscape-secondary" "portrait-primary" "portrait-secondary"*/

Page 38: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

VIBRATION API

Page 39: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

// Vibrate for one secondnavigator.vibrate(1000);

// Vibration pattern [vibrationTime, pause,…]navigator.vibrate([200, 100, 200, 100]);

// Vibrate for 5 secondsnavigator.vibrate(5000);

// Turn off vibrationnavigator.vibrate(0);

Page 40: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

WEB PAYMENTS

Page 41: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

var pay = navigator.mozPay(paymentToken);pay.onsuccess = function (event) { // Weee! Money!};

Page 43: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

mozmarket.receipts.Prompter({ storeURL: "https://marketplace.mozilla.org/app/myapp", supportHTML: '<a href="mailto:[email protected]">email [email protected]</a>', verify: true});

Page 44: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 45: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

DEVICEPROXIMITY

Page 46: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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 47: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

AMBIENT LIGHT EVENTS

Page 48: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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 49: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

PAGE VISIBILITY

Page 50: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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

Page 51: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Device Storage API

Browser API

TCP Socket API

Contacts API

systemXHR

PRIVILEGED APIS

Page 52: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

DEVICE STORAGE API

Page 53: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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

Page 54: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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 55: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

WEB ACTIVITIES

Page 57: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 58: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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 59: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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

Page 60: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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 61: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Future APIs

Page 62: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 63: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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 64: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Web Apps from Mozilla

Page 65: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 66: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

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 68: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Web Components & Mozilla Brick

Page 70: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

<x-flipbox> <div>I'm the front face.</div> <div>And I'm the back face.</div></x-flipbox>

Page 71: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

// assume that toggleButton and flipBox are already// defined as their respective DOM elementstoggleButton.addEventListener("click", function(){ flipBox.toggle(); });

Page 72: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

appbarcalendardatepickerdeckflipboxiconbuttonlayout

slideboxslidertabbartoggletogglegrouptooltip

Page 73: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Get started

Page 78: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus

Trying things out

Page 79: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus
Page 80: Bringing the Open Web & APIs to mobile devices with Firefox OS - GOTO conference, Aarhus