59
Firefox OS Code(Love) Hackathon HTML5 pour le mobile 2014-05-28 Frédéric Harper Sr. Technical Evangelist @ Mozilla @fharper | outofcomfortzone.net Creative Commons: http://j.mp/1mD8erV

Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

  • View
    234

  • Download
    0

Embed Size (px)

DESCRIPTION

HTML5 est un pas de géant dans la bonne direction: il apporte plusieurs fonctionnalités dont les développeurs avaient besoin pour créer plus facilement de meilleures expériences web. Il a aussi fait naitre un débat sans fin: applications natives ou applications web! Lors de cette présentation, Frédéric Harper vous montrera comment le web ouvert peut vous aider à créer des applications mobiles de qualités. Vous en apprendrez plus sur des technologies telles que les WebAPIs, ainsi que les outils qui vous permettront de viser un nouveau marché avec Firefox OS et le web d’aujourd'hui.

Citation preview

Page 1: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Firefox OS

Code(Love) Hackathon

HTML5 pour le mobile

2014-05-28

Frédéric Harper

Sr. Technical Evangelist @ Mozilla

@fharper | outofcomfortzone.net

Crea

tive

Com

mon

s: h

ttp:

//j.m

p/1m

D8er

V

Page 2: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Page 3: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Page 4: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 5: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

38 milliards d’appareils connectés d’ici 2020

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

Page 6: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Page 7: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 8: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 9: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 10: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Ce que vous méritez

Page 11: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 12: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Construit avec le Web

Utilisant HTML5, CSS3 et JavaScript

avec un nombre d’API

pour développer des applications.

Page 13: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

C’est open source

Page 14: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Quelques faits

§  7 opérateurs mobiles & 4 partenaires fabricants

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

Geeksphone Peak, LG FireWeb…

§  D’autres à venir: Huawei Y300, ZTE Open C, Alcatel One

Touche Fire C & E & S…

§  Vise les marchés émergents

Page 15: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 16: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 17: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 18: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Une application Firefox OS?

§  Une application “hosted” ou “packaged”

§  Utilisant §  Vanilla HTML5

§  Librairies…

§  Regular API

§  Privileged API

§  Certified API

Page 19: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-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 20: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

DÉMO App Manager + Emberjs todomvc

Page 21: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Web APIs

Page 22: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-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 23: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Ambient Light Sensor

Page 24: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-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 25: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

DÉMO Boilerplate – Ambient Light Sensor

Page 26: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Battery Status

Page 27: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-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 28: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

DÉMO Boilerplate – Battery status

Page 29: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

packaged

Page 30: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Browser

Page 31: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-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 32: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Browser

addEventListener('mozbrowserloadstart', function(e) {

//Do stuff});

/*

Possible values:

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

"mozbrowsericonchange“ "mozbrowsersecuritychange"

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

"mozbrowseropenwindow“ "mozbrowserclose"*/

Page 33: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-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 34: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Web Activities

Page 35: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Web Activities •  browse •  configure •  costcontrol •  dial •  open •  pick •  record •  save-bookmark

•  share •  view •  update •  new

•  mail •  websms/sms •  webcontacts/contact

Page 36: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Page 37: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-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 38: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Page 39: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Page 40: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

N’oubliez pas de le gérer! 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 41: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Page 42: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Comment débuter

Page 43: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Page 44: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Page 45: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Cordova & Phonegap

Page 46: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

API implémentés •  Camera •  Contacts •  Device •  Device-motion •  Geolocation •  Orientation •  Vibration

Page 47: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Free phone!

http://j.mp/mozPFA

Creative Commons: https://flic.kr/p/epEL3n

Page 48: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Simple

Page 49: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Firefox Web Developer Tools

Page 50: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 51: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 52: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28
Page 53: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Vers l'infini et plus loin encore…

Page 54: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Plus d’API Web & fonctionnalités

•  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 55: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Seulement 48h pour hacker! Pensez au web en premier…

Page 56: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

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

Ressources

Page 57: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Vous planifiez rendre votre application

disponible sous Firefox OS?

Faites-moi signe!

Page 58: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

http://yuldev.ca

Page 59: Firefox OS, HTML5 pour le mobile - Code(love) Hackathon - 2014-05-28

Frédéric Harper

[email protected]

@fharper

http://hacks.mozilla.com

http://outofcomfortzone.net