firefox os, fixing the mobile web - fitc toronto - 2014-04-28

57
Firefox OS, xing the mobile web Frédéric Harper Sr. Technical Evangelist @ Mozilla @fharper | outofcomfortzone.net FITC Toronto Toronto, Canada 2014-04-28

Post on 18-Oct-2014

676 views

Category:

Technology


2 download

DESCRIPTION

The mobile web got a bad reputation. In reality, it's the platform to bet on if you care about reach, and sustainability of your product. In this talk, Frédéric Harper will show you how you can use HTML5, CSS3, and JavaScript to build amazing mobile applications as to brush up what you previously published. Learn about the open web technologies, including WebAPIs, and tools designed to get you started developing HTML apps for Firefox OS, and the web.

TRANSCRIPT

Page 1: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Firefox OS, fixing the mobile web

Frédéric Harper Sr. Technical Evangelist @ Mozilla @fharper | outofcomfortzone.net

FITC Toronto Toronto, Canada

2014-04-28

Page 2: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Creative Commons: http://j.mp/1hCZYIe

Page 3: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Creative Commons: http://j.mp/1ljZuJC

Page 4: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 5: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 6: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

38 billion devices connected in 2020

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

Page 7: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Creative Commons: http://j.mp/1gP4X4K

Page 8: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 9: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

What you deserve

Page 10: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 11: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Built with the Web

Using HTML5, CSS3 and JavaScript

with a number of APIs

to build apps.

Page 12: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

It’s open source

Page 13: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Some facts

§  7 mobile operator & 4 hardware partners

§  ZTE Open, Alcatel One Touch Fire, Geeksphone Keon,

Geeksphone Peak, LG FireWeb…

§  More to come: Huawei Y300, ZTE Open C, Alcatel One

Touche Fire C & E & S…

§  Aimed at emerging markets/low end market

Page 14: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 15: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 16: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 17: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

A Firefox OS app?

§  Creating a hosted or packaged app

§  Using §  Vanilla HTML5

§  Librairies…

§  Regular API

§  Privileged API

§  Certified API

Page 18: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

HTML5 + manifest (JSON) = Firefox OS app { "version": “42", "name": ”My amazing app", "launch_path": "/index.html", "description": ”My super amazing app do super amazing things", "icons": { "16": "/images/logo16.png”,}, "developer": { "name": ”Frédéric Harper", "url": "http://outofcomfortzone.net",}, "default_locale": "en", "permissions": { "geolocation": { "description": ”Get the long/lat of the user" } }}

Page 19: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

DEMO App Manager + Emberjs todomvc

Page 20: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Web APIs

Page 21: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Web APIs – Regular •  Alarm API •  Ambient light sensor •  Archive API •  Battery Status API •  Geolocation API •  IndexedDB •  Network Information API •  Notifications API

•  Open WebApps •  Proximity sensor •  Push API •  Screen Orientation •  Vibration API •  Web Activities •  WebFM API •  WebPayment

packaged

hosted

Page 22: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Ambient Light Sensor

Page 23: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Ambient Light Sensor

window.addEventListener("devicelight", function (event) {

// The level of the ambient light in lux// The lux values for "dim" typically begin below 50,// and the values for "bright" begin above 10000

console.log(event.value);});

Page 24: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

DEMO Boilerplate – Ambient Light Sensor

Page 25: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Battery Status

Page 26: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Battery Status

var battery = navigator.battery;

if (battery) {

var batteryLevel = Math.round(battery.level * 100) + "%", 

charging = (battery.charging)? “yes" : "no",

chargingTime = parseInt(battery.chargingTime / 60, 10,dischargingTime = parseInt(battery.dischargingTime / 60, 10);

 

battery.addEventListener("levelchange", setStatus, false);battery.addEventListener("chargingchange", setStatus, false);

battery.addEventListener("chargingtimechange", setStatus, false);}

Page 27: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

DEMO Boilerplate – Battery status

Page 28: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Web APIs – Privileged •  Browser API •  Contacts API •  Device Storage API •  systemXHR •  TCP Socket API

packaged

Page 29: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Browser

Page 30: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Browser

<div>

<span id='location-bar'></span><button onclick='go_button_clicked()'>Go</button>

</div><div id='load-status'></div>

<div id='security-status'></div>

<img id='favicon'><div id='title'></div>

<iframe mozbrowser src=‘yoursite.com' id='browser'></iframe>

Page 31: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Browser

addEventListener('mozbrowserloadstart', function(e) {

//Do stuff});

/*

Possible values:

"mozbrowserloadstart“ "mozbrowserloadend""mozbrowserlocationchange“ "mozbrowsertitlechange"

"mozbrowsericonchange“ "mozbrowsersecuritychange"

"mozbrowsercontextmenu“ "mozbrowsererror""mozbrowserkeyevent“ "mozbrowsershowmodalprompt"

"mozbrowseropenwindow“ "mozbrowserclose"*/

Page 32: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Web APIs – Certified •  Camera API •  Idle API •  Mobile Connection API •  Network Stats API •  Permissions API •  Power Management API •  Settings API •  Time/Clock API

•  Voicemail •  WebBluetooth •  WebSMS •  WebTelephony •  WiFi Information API

OS/OEM

Page 33: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Web Activities

Page 34: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Web Activities •  browse •  configure •  costcontrol •  dial •  Open •  new

•  mail •  websms/sms •  webcontacts/contact

•  pick •  record •  save-bookmark •  share •  view •  update

packaged

hosted

Page 35: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Pick var activity = new MozActivity({ name: "pick", //Provide the data required //by the filter of the activity data: { type: "image/jpeg" }});

Page 36: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Pick activity.onsuccess = function () { var img = document.createElement("img"); if (this.result.blob.type.indexOf("image") != -1) { img.src = window.URL.createObjectURL(this.result.blob); }};activity.onerror = function () { //error};

Page 37: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Dial var call = new MozActivity({ name: "dial", data: { number: "+46777888999" }});

Page 38: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Web Activity Received Handler "activities": { "pick": { "filters": { "type": ["image/jpeg", "image/png"] }, "disposition": "inline", "returnValue": true, "href": "/index.html#pick" }}

Page 39: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Don’t forget to handle it! navigator.mozSetMessageHandler('activity', function(activityRequest) { var option = activityRequest.source; if (activityRequest.source.name === "pick") { // Do something to handle the activity if (picture) { activityRequest.postResult(picture); } else { activityRequest.postError("Unable to provide a picture"); } }});

Page 40: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Creative Commons: http://j.mp/1iZHGAW

Page 41: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

How to start

Page 42: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Creative Commons: http://j.mp/1iquK8Q

Page 43: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Creative Commons: http://j.mp/Ilm7wx

Page 44: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Cordova & Phonegap

Page 45: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

API implementations •  Camera •  Contacts •  Device •  Device-motion •  Geolocation •  Orientation •  Vibration

Page 46: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Free phone!

http://j.mp/mozPFA

Page 47: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Simplicity…

Page 48: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Firefox Web Developer Tools

Page 49: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 50: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 51: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28
Page 52: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Creative Commons: http://j.mp/1gIdcPF

To infinity, and beyond…

Page 53: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

More Web APIs & features

•  Calendar API

•  FileHandle API Sync API

•  Keyboard/IME API WebRTC

•  HTTP-cache API

•  Peer to Peer API

•  Spellcheck API LogAPI

•  Resource lock API

•  UDP Datagram Socket API

•  WebNFC

•  WebUSB

Page 54: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

When you’ll build your next app Why not think about the web first…

Page 55: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Resources Firefox OS Simulator http://j.mp/fxosSimulator Firefox OS App Manager http://j.mp/fxosAppManager Mozilla Developer Network https://developer.mozilla.org StackOverflow forum http://j.mp/fxosStackOverflow

Firefox OS Boilerplate http://j.mp/fxosBoilerplate Firefox OS UI Component http://buildingfirefoxos.com/ Mozilla Brick http://j.mp/mozBrick FireWatch https://github.com/digitarald/firewatch

Page 56: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Planning to port or build a

Firefox OS app?

Please let me know!

Page 57: Firefox OS, fixing the mobile web - FITC Toronto - 2014-04-28

Frédéric Harper

[email protected]

@fharper

http://hacks.mozilla.com

http://outofcomfortzone.net