SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Cobalt
Le meilleur des deux mondes
Notre monde a changé
2008
App Store iOS2
Android Market
Android 1.0
2010
iPad
2011
Android 3.0
& tablettes
android
2015
All addicted :)
Aujourd’hui
1,75 milliard d’utilisateurs
9 millions de développeurs
mobile
Chiffres Q2 2015, France, Source ZDNet
Chiffres Q1 2015, Monde, Source Developer Economics
Comment développer des applis
Méthode 1 : The Good Old Way
LE NATIF
Comment développer des applis
Méthode 2 : Esquive
LE TRADUCTEUR
Comment développer des applis
Méthode 3 : The new kid
HYBRID
Comment développer des applis
Méthode 3 : HTML5 & Hybrid
● Lent au chargement
● Long a développer
● Beaucoup de bugs CSS
● Peu de support des nouveautés
● Des promesses
Et ça fait 5 ans que ça dure !
● Transitions saccadées
Réinventons l’hybride
Méthode 3b : COBALT
● Réconcillier devs web et natif
● Gagner du temps
● Economiser de l’argent
● Utiliser le meilleur des deux mondes
Comment ça marche ?
Embarquement !
What’s in the box ?
Un framework
Android
(aar soon)
Un framework
iOS
(pod soon)
Une librairie
VanillaJS
Un CLI en
NodeJS
Un framework
Windows
(En 2016)
What’s in the box ?
FlexibilitéRespect des
guidelines
Navigation
Native
Echanges simples,
système robuste
Cobalt - Communication Web <-> Natif
Echanges simples,
système robuste
Cobalt - Communication Web <-> Natif CODE
Exemple d’envoi d’événement du Web vers le natif :
cobalt.sendEvent("playVideo", { video_id: 6500 }, function(){
cobalt.log("Video is playing");
});
@Override protected boolean onUnhandledEvent( String event, JSONObject data, String callback) {
if (event.equals("playVideo")) {
try {
int video_id = data.getInt("video_id");
playVideo(video_id);
sendCallback(callback);
catch (JSONException e) {
// handle exception
}
return true;
}
return false;
}
JavaScript, Web
Java, Android
Cobalt - Communication Web <-> Natif CODE
Exemple d’envoi d’événement du natif vers le Web :
JSONObject data = new JSONObject()
try {
data.put("value", 11);
sendEvent("setZoom", data, “myCallbackId”);
}
catch (JSONException e) {
// handle exception
}
cobalt.addEventListener(“setZoom”, function(data, callback ) {
$("body").css("font-size", data.value + "px");
cobalt.sendCallback(callback);
});
Java, Android
Javascript, Web
Cobalt - Navigation Native
Navigation
Native
Cobalt - Navigation Native
● possibilité de demande de
navigation native depuis le web,
● choix du contrôleur natif dans
lequel charger la pageNavigation
Native
Cobalt - Navigation Native
{
"controllers": {
"default": {
"ios": "ViewController",
"android": ".activities.DefaultActivity",
"pullToRefresh": true,
"inifiniteScroll": true
},
"create": {
"ios": "CreateViewController",
"android": ".activities.CreateActivity"
}
}
}
cobalt.navigate.push({ page : ‘index.html’, controller : ‘create’, data : { some : ‘data’ } });
Pour naviguer dans l’application depuis le Web :
Un fichier de configuration : cobalt.conf
CODE
Cobalt - Navigation Native
● chaque vue web est dans une
WebView différente
Navigation
Native
Chaque vue web est dans une WebView différente
Cobalt - Navigation Native
Comment manipuler mes données ?
Chaque vue web est dans une WebView différente
● Cobalt.storage
● navigate with data
● Cobalt PUBSUB Plugin
Cobalt - Navigation Native
Respect
des guidelines
Respect des guidelines
L’utilisateur doit retrouver l’interface
et l’expérience auxquelles il est
habitué.
Composants natifs
Pull-to-refresh... … Infinite scroll
Composants natifs - Pull-to-refresh CODE
// cobalt.conf
"controller": {
[...],
"pullToRefresh": true
}
// page.html
cobalt.init({
events: {
"pullToRefresh": function(data, callback) {
// Update your page content here!
// Call callback when content is up to date:
cobalt.sendCallback(callback);
}
}
});
Composants natifs
Alerts Toasts
Composants natifs - Alerts CODE
// page.html
cobalt.alert({
title: "Do you want some tea?",
buttons: ["Yes", "No"],
callback: function(data) {
cobalt.log(data.index ? ‘Are you sure?’ : ‘I make you one.’);
}
});
Composants natifs
Et plein d’autres !
● DatePicker,
● WebLayer,
● etc.
À venir
● AppBar,
● etc.
Respect
des guidelines
Respect des guidelines
Des composants natifs, c’est l’
assurance de toujours profiter des
dernières mises à jour des OS sans
tout devoir réécrire.
Respect des guidelines - Pull-to-refresh EXEMPLE
Rien Barre de progression Indicateur
Flexibilité
Flexibilité
● Système de communication
Web <-> Natif,
● Intégration modulable,
● Système de plugins.
Où est la vue “full-native” ?
Plugins
● 1 plugin = 1 fichier JS + 1 singleton iOS + 1 singleton Android,
● Réception des messages du Web par les singletons natifs,
● Après, tout est possible !
Plugins CODE
// LocationPlugin.java
public class LocationPlugin extends CobaltAbstractPlugin {
static PubSubPlugin sInstance;
public static CobaltAbstractPlugin getInstance() {
if (sInstance == null) sInstance = new LocationPlugin();
return sInstance;
}
@Override
public void onMessage(CobaltPluginWebContainer webContainer, JSONObject message) {
// Handle message
}
}
Plugins CODE
// cobalt.conf
{
"plugins": {
"location": {
"android": "org.cobaltians.location.LocationPlugin",
"ios": "LocationPlugin"
}
}
}
// page.html
cobalt.getLocation(function(position) {
console.log(‘location is’ + position);
});
// location.js
(function(cobalt) {
var plugin = {
name: "location",
onResult: undefined,
init: function(options) {
// Create shortcuts
cobalt.getLocation = this.getLocation.bind(this);
},
getLocation: function(callback) {
if (typeof callback == "function") {
this.onResult = callback;
}
cobalt.send({
type: "plugin",
name: "location",
action: "getLocation"});
},
handleEvent: function(json) {
if (json && json.data && this.onSuccess) {
this.onSuccess(json.data.value)
}
}
};
cobalt.plugins.register(plugin);
})(cobalt || {});
Plugins CODE
Plugins
Disponibles En cours
● ActionPicker,
● AppInfos,
● Location,
● PubSub,
● WebServices.
● Contacts,
● FullScreenImage,
● PhotoPicker,
● Slideshow,
● VideoPlayer,
● etc.
Compatibilité aves les plugins Cordova !
Récapitulatif - Une app Cobalt
Natif Web
● Navigation et transitions,
● Composants propre à la plateforme,
● Accès aux capteurs et données.
● Logique applicative,
● Interface graphique.
Système de communication
/ !  Cobalt n’est pas un framework d’UI Web !
Mais vous pouvez utiliser vos frameworks habituels
● Hybride modulable,
● Plugins.
Get started FAST
Essayez avant d’adpoter
sudo npm install -g cobaltians
cobaltians create myApp HelloWorld
“Cobalt Catalog”, l’app de démonstration
disponible sur les stores
Cobalt - Join the Rebels!
Cobalt est Open Source !
cobaltians.org
cobaltians/cobalt
@Cobaltians
contact@cobaltians.org We need YOU
on the next release !
Cobalt
We can help you :)
● Formation approfondie
● Développement de plugins
● Développement d’apps ou de protos
contact@kristal.io
09 72 49 07 37
Merci de votre attention
Sébastien Famel
Développeur Android
Sébastien Vitard
Développeur Cross-platform
Guillaume Gendre
Développeur Web Hybride Cobalt
Suivez-nous :
@kristal_fr
@cobaltians

Contenu connexe

Similaire à Cobalt chez Orange Lannion, 2015

Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013jeromevdl
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogySacha Leprêtre
 
Human Talks Grenoble 08/09/2015 - AngularJS et Cordova = applications WEB et ...
Human Talks Grenoble 08/09/2015 - AngularJS et Cordova = applications WEB et ...Human Talks Grenoble 08/09/2015 - AngularJS et Cordova = applications WEB et ...
Human Talks Grenoble 08/09/2015 - AngularJS et Cordova = applications WEB et ...Xavier NOPRE
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: AngularHabib Ayad
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Tugdual Grall
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
 
Rapport app mobile ionic3 my gallery
Rapport app mobile ionic3 my galleryRapport app mobile ionic3 my gallery
Rapport app mobile ionic3 my galleryMOHAMMED MOURADI
 
Conférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierConférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierDamien Laureaux
 
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKitConstruire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKituncatcrea
 
BlaBlaCar - Going Native !
BlaBlaCar - Going Native ! BlaBlaCar - Going Native !
BlaBlaCar - Going Native ! Erwann Robin
 
Blablacar - Going native - Erwan Robin
Blablacar - Going native - Erwan RobinBlablacar - Going native - Erwan Robin
Blablacar - Going native - Erwan RobinCocoaHeads France
 
Initiation au développement mobile sous Android
Initiation au développement mobile sous AndroidInitiation au développement mobile sous Android
Initiation au développement mobile sous AndroidAbdelkader Rhouati
 
Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Microsoft Décideurs IT
 
L'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsL'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsThomas Bassetto
 
Firefox OS, le web de demain - Epita - 2014-06-06
Firefox OS, le web de demain - Epita - 2014-06-06Firefox OS, le web de demain - Epita - 2014-06-06
Firefox OS, le web de demain - Epita - 2014-06-06Frédéric Harper
 
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...DEFO KUATE Landry
 
Ingénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdfIngénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdfJEANCLAUDECAMARA
 

Similaire à Cobalt chez Orange Lannion, 2015 (20)

Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
 
Human Talks Grenoble 08/09/2015 - AngularJS et Cordova = applications WEB et ...
Human Talks Grenoble 08/09/2015 - AngularJS et Cordova = applications WEB et ...Human Talks Grenoble 08/09/2015 - AngularJS et Cordova = applications WEB et ...
Human Talks Grenoble 08/09/2015 - AngularJS et Cordova = applications WEB et ...
 
Native script
Native scriptNative script
Native script
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
 
Rapport app mobile ionic3 my gallery
Rapport app mobile ionic3 my galleryRapport app mobile ionic3 my gallery
Rapport app mobile ionic3 my gallery
 
Conférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierConférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG Montpellier
 
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKitConstruire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKit
 
BlaBlaCar - Going Native !
BlaBlaCar - Going Native ! BlaBlaCar - Going Native !
BlaBlaCar - Going Native !
 
Blablacar - Going native - Erwan Robin
Blablacar - Going native - Erwan RobinBlablacar - Going native - Erwan Robin
Blablacar - Going native - Erwan Robin
 
Initiation au développement mobile sous Android
Initiation au développement mobile sous AndroidInitiation au développement mobile sous Android
Initiation au développement mobile sous Android
 
Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...
 
L'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsL'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objets
 
Firefox OS, le web de demain - Epita - 2014-06-06
Firefox OS, le web de demain - Epita - 2014-06-06Firefox OS, le web de demain - Epita - 2014-06-06
Firefox OS, le web de demain - Epita - 2014-06-06
 
12-Factor
12-Factor12-Factor
12-Factor
 
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
 
Ingénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdfIngénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdf
 

Cobalt chez Orange Lannion, 2015

  • 2. Notre monde a changé 2008 App Store iOS2 Android Market Android 1.0 2010 iPad 2011 Android 3.0 & tablettes android 2015 All addicted :)
  • 3. Aujourd’hui 1,75 milliard d’utilisateurs 9 millions de développeurs mobile Chiffres Q2 2015, France, Source ZDNet Chiffres Q1 2015, Monde, Source Developer Economics
  • 4. Comment développer des applis Méthode 1 : The Good Old Way LE NATIF
  • 5. Comment développer des applis Méthode 2 : Esquive LE TRADUCTEUR
  • 6. Comment développer des applis Méthode 3 : The new kid HYBRID
  • 7. Comment développer des applis Méthode 3 : HTML5 & Hybrid ● Lent au chargement ● Long a développer ● Beaucoup de bugs CSS ● Peu de support des nouveautés ● Des promesses Et ça fait 5 ans que ça dure ! ● Transitions saccadées
  • 8. Réinventons l’hybride Méthode 3b : COBALT ● Réconcillier devs web et natif ● Gagner du temps ● Economiser de l’argent ● Utiliser le meilleur des deux mondes
  • 9. Comment ça marche ? Embarquement !
  • 10. What’s in the box ? Un framework Android (aar soon) Un framework iOS (pod soon) Une librairie VanillaJS Un CLI en NodeJS Un framework Windows (En 2016)
  • 11. What’s in the box ? FlexibilitéRespect des guidelines Navigation Native Echanges simples, système robuste
  • 12. Cobalt - Communication Web <-> Natif Echanges simples, système robuste
  • 13. Cobalt - Communication Web <-> Natif CODE Exemple d’envoi d’événement du Web vers le natif : cobalt.sendEvent("playVideo", { video_id: 6500 }, function(){ cobalt.log("Video is playing"); }); @Override protected boolean onUnhandledEvent( String event, JSONObject data, String callback) { if (event.equals("playVideo")) { try { int video_id = data.getInt("video_id"); playVideo(video_id); sendCallback(callback); catch (JSONException e) { // handle exception } return true; } return false; } JavaScript, Web Java, Android
  • 14. Cobalt - Communication Web <-> Natif CODE Exemple d’envoi d’événement du natif vers le Web : JSONObject data = new JSONObject() try { data.put("value", 11); sendEvent("setZoom", data, “myCallbackId”); } catch (JSONException e) { // handle exception } cobalt.addEventListener(“setZoom”, function(data, callback ) { $("body").css("font-size", data.value + "px"); cobalt.sendCallback(callback); }); Java, Android Javascript, Web
  • 15. Cobalt - Navigation Native Navigation Native
  • 16. Cobalt - Navigation Native ● possibilité de demande de navigation native depuis le web, ● choix du contrôleur natif dans lequel charger la pageNavigation Native
  • 17. Cobalt - Navigation Native { "controllers": { "default": { "ios": "ViewController", "android": ".activities.DefaultActivity", "pullToRefresh": true, "inifiniteScroll": true }, "create": { "ios": "CreateViewController", "android": ".activities.CreateActivity" } } } cobalt.navigate.push({ page : ‘index.html’, controller : ‘create’, data : { some : ‘data’ } }); Pour naviguer dans l’application depuis le Web : Un fichier de configuration : cobalt.conf CODE
  • 18. Cobalt - Navigation Native ● chaque vue web est dans une WebView différente Navigation Native
  • 19. Chaque vue web est dans une WebView différente Cobalt - Navigation Native
  • 20. Comment manipuler mes données ? Chaque vue web est dans une WebView différente ● Cobalt.storage ● navigate with data ● Cobalt PUBSUB Plugin Cobalt - Navigation Native
  • 21. Respect des guidelines Respect des guidelines L’utilisateur doit retrouver l’interface et l’expérience auxquelles il est habitué.
  • 23. Composants natifs - Pull-to-refresh CODE // cobalt.conf "controller": { [...], "pullToRefresh": true } // page.html cobalt.init({ events: { "pullToRefresh": function(data, callback) { // Update your page content here! // Call callback when content is up to date: cobalt.sendCallback(callback); } } });
  • 25. Composants natifs - Alerts CODE // page.html cobalt.alert({ title: "Do you want some tea?", buttons: ["Yes", "No"], callback: function(data) { cobalt.log(data.index ? ‘Are you sure?’ : ‘I make you one.’); } });
  • 26. Composants natifs Et plein d’autres ! ● DatePicker, ● WebLayer, ● etc. À venir ● AppBar, ● etc.
  • 27. Respect des guidelines Respect des guidelines Des composants natifs, c’est l’ assurance de toujours profiter des dernières mises à jour des OS sans tout devoir réécrire.
  • 28. Respect des guidelines - Pull-to-refresh EXEMPLE Rien Barre de progression Indicateur
  • 29. Flexibilité Flexibilité ● Système de communication Web <-> Natif, ● Intégration modulable, ● Système de plugins.
  • 30. Où est la vue “full-native” ?
  • 31. Plugins ● 1 plugin = 1 fichier JS + 1 singleton iOS + 1 singleton Android, ● Réception des messages du Web par les singletons natifs, ● Après, tout est possible !
  • 32. Plugins CODE // LocationPlugin.java public class LocationPlugin extends CobaltAbstractPlugin { static PubSubPlugin sInstance; public static CobaltAbstractPlugin getInstance() { if (sInstance == null) sInstance = new LocationPlugin(); return sInstance; } @Override public void onMessage(CobaltPluginWebContainer webContainer, JSONObject message) { // Handle message } }
  • 33. Plugins CODE // cobalt.conf { "plugins": { "location": { "android": "org.cobaltians.location.LocationPlugin", "ios": "LocationPlugin" } } } // page.html cobalt.getLocation(function(position) { console.log(‘location is’ + position); });
  • 34. // location.js (function(cobalt) { var plugin = { name: "location", onResult: undefined, init: function(options) { // Create shortcuts cobalt.getLocation = this.getLocation.bind(this); }, getLocation: function(callback) { if (typeof callback == "function") { this.onResult = callback; } cobalt.send({ type: "plugin", name: "location", action: "getLocation"}); }, handleEvent: function(json) { if (json && json.data && this.onSuccess) { this.onSuccess(json.data.value) } } }; cobalt.plugins.register(plugin); })(cobalt || {}); Plugins CODE
  • 35. Plugins Disponibles En cours ● ActionPicker, ● AppInfos, ● Location, ● PubSub, ● WebServices. ● Contacts, ● FullScreenImage, ● PhotoPicker, ● Slideshow, ● VideoPlayer, ● etc. Compatibilité aves les plugins Cordova !
  • 36. Récapitulatif - Une app Cobalt Natif Web ● Navigation et transitions, ● Composants propre à la plateforme, ● Accès aux capteurs et données. ● Logique applicative, ● Interface graphique. Système de communication / ! Cobalt n’est pas un framework d’UI Web ! Mais vous pouvez utiliser vos frameworks habituels ● Hybride modulable, ● Plugins.
  • 37. Get started FAST Essayez avant d’adpoter sudo npm install -g cobaltians cobaltians create myApp HelloWorld “Cobalt Catalog”, l’app de démonstration disponible sur les stores
  • 38. Cobalt - Join the Rebels! Cobalt est Open Source ! cobaltians.org cobaltians/cobalt @Cobaltians contact@cobaltians.org We need YOU on the next release !
  • 39. Cobalt We can help you :) ● Formation approfondie ● Développement de plugins ● Développement d’apps ou de protos
  • 40. contact@kristal.io 09 72 49 07 37 Merci de votre attention Sébastien Famel Développeur Android Sébastien Vitard Développeur Cross-platform Guillaume Gendre Développeur Web Hybride Cobalt Suivez-nous : @kristal_fr @cobaltians

Notes de l'éditeur

  1. Seb F
  2. (slide à améliorer encore jpense)
  3. Un dev par plateforme Cher Des applis plus rapides que leurs ombres
  4. Ecrire dans un language pour que ce soit traduit dans un autre Telerik, Xamarin, ou encore React.native Problème : nouveau langage à apprendr si c’est pas prévu par le framwork, ça devient compliqué adapter visuellement un composant peut s’averer difficile, souvent il faut le recoder
  5. HTML5 = nouveautés du web Hybrid = voiture hybrid = non hybrid = donner la possibilité au web d’accèder aux fonctionnalités natives promesse “Dev once, publish everywhere” ecrire code web 1fois, mettre dans conteneur natif correspondant Cordova/Phonegap, Ionic, Trigger.io, etc Pas cher, 1dev unique looks great
  6. Performances toujours pas au rendez vous Lenteur des animations Lourdeur générale long et fastidieu à développer si on veut une app compétitive Nouveautés HTML5 buggées, lentes ou qui n’arrivent pas assez vite sur l’ensemble des terminaux Tous les ans c’est l’année de l’hybride, c’est sur, ce coup ci c’est la bonne
  7. Pouvoir choisir ce qu’on fait en web et en natif Pouvoir utiliser natif ou web selon les parties de l’application Pouvoir enrichir facilement l’outil coté natif ou web Que ce soit facile à utiliser pour les dev web et pratique également pour les devs natif Que l’on ait enfin un bon outil pour créer des applications le mieux possible et dans un minimum de temps En résumé : CLIC Et ça c’est la promesse de Cobalt.
  8. GG Je vous propose de plonger un petit peu + dans cobalt et surtout de voir comment ça s’utilise au jour le jour
  9. Qu’est ce que Cob? 1 frmk ios, 1 frmk andro, 1 lib js Pour un app on aura : 1 app ios, 1 app android ttes deux embarqueront une partie web commune 1 cli pour démarrer un projet Cobalt rapidement Petite info sup Depuis que Windows Mobile > 5% marché, on étudie le fwk Windows, 2016
  10. Quatres choses principales 1 systeme d’uniformaisation des echanges web/natif quelquesoit la plateforme nav native, pas web composants natifs à dispo du web qui permettent de mieux respecter les guidelines de la flexibilité notemment avec un systeme de plugins
  11. Le système de communication entre web et natif Un systeme d’envoit de messages et de callbacks au format JSON CLIC Permet de demander un sandwich à l’autre côté, d’être notifié quand il est prêt C’est robuste : testé contre les pb d’encodage ou les pertes de messages important : principe identique pour toutes les plates-formes, quel que soit la direction de l’échange
  12. Une navigation native Pourquoi ? (clic) Parce que rien ne remplace les transitions natives entre les pages Parce que Android et iOS n’ont pas la même anim (voir sur GIF) Parce qu’elles peuvent changer à tout moment en cas de maj de l’OS Ou être désactivées par l’utilisateur, on doit respecter ça
  13. Depuis le web on peut faire des demandes de navigation native plusieurs types : push / pop / popTo / modal / replace (animé) on spécifie la page HTML que l’on souhaite afficher on spécifie le contrôleur natif dans lequel charger la page ->Ca veut dire que Cobalt permet de créer vos propres vues hybrides, afin de mélanger + librement web et natif sur une même vue
  14. Pour vous permettre de customiser vos vues hybrides, il y a un fichier cobalt.conf Permet de faire le lien entre le nom de la vue (default/create) et les classes natives correspondantes Des options (PTR,IS) Les classes natives héritent de CobaltViewController iOS ou de la CobaltActivity/CobaltFragment Android CLIC Exemple de push web
  15. Une navigation native implique que chaque vue web soit dans une webview différente Chaque vue dans un fichier HTML différent Pour illustrer voici une comparaison d’un app native / app cordova / app Cobalt
  16. […] Comment se passer des infos d’une page à l’autre ? CLIC On a pensé à tout CLIC storage : base clé / valeur .. tout type de donnée. bientôt accessible depuis le natif également CLIC nav : Passer infos lors des push/pop CLIC : Publish/Subscribe : Une ou plusieurs pages publient ou s’inscrient à un channel et echangent des messages C’est surtout un vrai boost des performances : en web mobile, pages + simples = pages + rapides
  17. Seb V Composants natifs pour palier aux manques du Web
  18. Exemple : évolution du PTR Android
  19. Rien à modifier dans apps, simple rebuild
  20. Communication : permettre d’enrichir app avec UI native et propres fonctions natives, Modulable : dans tout ou partie de l’écran / de l’application, Plugins : enrichir en fonctionnalités avec store de plugins à l’horizon 2016.
  21. Framework UI Web : Ionic (anecdote Yool et Baptiste Jamin), AngularJS, Onsen UI, etc.
  22. GG Pour vous permettre de démarrer rapidement on a 2 choses: Le CLI : ligne de commande en nodejs : créer un projet Cobalt en quelques secondes à partir d’un sample HELLO ou CATALOG Catalog dispo sur les store : pas très beau mais tester l’ensemble des fonctionnalités et composants
  23. Rejoignez nous Cobalt est open source et gratuit site web, blog github code source et DOC suivre et contacter via twitter et mail CLIC on recherche activement des dev web ou mobile pour nous aider Continuer à faire avancer Cobalt, l’outil manquant du dev hybride intéressés, venez nous voir :)
  24. Seb F N’hésitez pas également à passer, prendre un café ou juste bavarder Faut en profiter on est voisins :)
  25. Il y a aussi une newsletter, on peut vous y inscrire On vous fera passer un formulaire de satisfaction également Si vous avez des questions