Présentation par Christophe FERNANDES et Athanase Kalantzakis. Retour d'expérience et application professionnel des API WebExtensions. Présentée lors du meetup chez Firefox : introduction aux webextensions.
6. 01. iGraal, une success story
iGraal en quelques chiffres
+3 000 000
inscrits
+300 000
Commandes
par mois
+1 650
Marchands
partenaires
18 millions €
de CA en 2016
Créé en 2006, leader du marché du cashback depuis 2012 en France
Ouverture en 2009 de l’Allemagne, #2 sur ce marché
Décembre 2016 : Prise de participation majoritaire par le groupe M6
7. 01. iGraal, le cashback c’est quoi ?
Vous achetez sur Internet ?
iGraal vous reverse de l’argent
lors de vos achats en ligne
C’est le cashback !
8. Le marchand nous rémunère
pour votre achat
Nous partageons cette
commission avec vous !
01. iGraal, le cashback c’est quoi ?
Vous achetez chez un
marchand partenaire en
passant par iGraal
1 2 3
9. Dès 20€ cumulés, vous récupérez vos gains !
01. iGraal, le cashback c’est quoi ?
Vous cumulez vos gains sur votre cagnotte iGraal
4
12. 01. iGraal, l’extension
L’extension iGraal est un outil offert aux utilisateurs iGraal afin de :
● Connaître les dernières offres proposées
● Éviter d’oublier d’activer le cashback
● Activer le cashback sans passer par le site
● Les rassurer sur l’obtention du cashback
Disponible sur les 4 principaux navigateurs :
13. 01. iGraal, l’extension
Juin 2017 : Refonte de notre extension
Objectifs :
● Adapter l’extension au design actuel
du site et des applications mobiles
● Mise à niveau des APIs
● Mise à jour des technos
● Utilisation des WebExtensions
16. 02.1 WebExtensions, la structure
L’extension est constituée par 3 éléments principaux
Background
script
● Assure la récupération des données depuis
l’API iGraal
● Gère le suivi de la navigation pour la détection
● Contient les règles métiers
Popup
● Présente les dernières offres
● Navigation par catégories
● Recherche de marchands
● Rappel des offres du marchand (mode détecté et activé)
Content
scripts
● Communication avec le site iGraal
● Toolbar sur les partenaires
● Gère l’ajout de picto sur les SERPS
● Alerte panier etc ….
19. L’API browser.tabs permet de :
● Ajouter des listeners sur les événements des
tabs : ouverture, fermeture, mise à jour etc...
● Ouvrir/Fermer une tab
● Changer l’url ou une propriété de la tab
● Récupérer la tab courante, toutes les tabs,
celles d’une fenêtre …
C’est via cette API que nous assurons :
● Détection du cashback
● Sécurité de l’obtention du cashback
02.1 WebExtensions, l’API tabs
https://developer.mozilla.org/fr/Add-ons/WebExtensions/API/tabs
20. 02.1 WebExtensions, l’API tabs, la démo
https://github.com/igraal/WebExtensions/releases/tag/tabs-sample
Démo !
21. 02.1 WebExtensions, l’API tabs, le code
https://github.com/igraal/WebExtensions/releases/tag/tabs-sample
1
background.js
22. 02.1 WebExtensions, l’API tabs, le code
https://github.com/igraal/WebExtensions/releases/tag/tabs-sample
background.js
2
25. 02.1 WebExtensions, l’API runtime
https://developer.mozilla.org/fr/Add-ons/WebExtensions/API/runtime
L’API browser.runtime permet de :
● Récupérer des informations sur l’extension et
son environnement d’exécution : id, os,
architecture etc...
● Communiquer entre les différents composants
de l’extension.
● Définir une url de désinstallation
26. 02.1 WebExtensions, l’API runtime, la démo
https://github.com/igraal/WebExtensions/releases/tag/send-message-sample
Démo !
40. webRequest.onBeforeRedirect
02.1 WebExtensions, on utilise aussi les APIs...
Nous utilisons aussi les APIs suivantes
browser.management
browser.browserActionstorage
privacy.websites.thirdPartyCookiesAllowed
42. 03. Développement cross browser
L’adaptation cross browser :
● L’utilisation de “browser“ ne fonctionne pas
sur Chrome et Opera
● Certaines APIs ne sont pas encore
disponibles sur Firefox
● Nous supportons aussi the new IE … Safari !
● Nous souhaitons partager toutes les règles
métiers
43. 03. Développement cross browser
https://github.com/mozilla/webextension-polyfill
Les solutions adoptées
● L’utilisation “d'adapters” pour les deux types d’API
● Utilisation du webextension-polyfill
● Utilisation de webpack pour générer deux build
différents
44. 03. Développement cross browser, démo
https://github.com/igraal/WebExtensions/releases/tag/cross-browser-sample
Démo !