SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
Développement Cross-Platform
   avec Titanium Mobile
       Xavier Lacot – 06 Décembre 2011
Qui suis-je ?


       Xavier Lacot
         ■   Clever Age
               ■   Dirige le centre d'expertise
               ■   Leader technique du pôle PHP
         ■   Contributeur à plusieurs projets Open Source
         ■   Développeur Titanium depuis 2009
         ■   Expert frameworks Web
         ■   Vice Président De l'Association Française des Utilisateurs de
             PHP (afup.org)
         ■   http://twitter.com/xavierlacot

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile               2
Xavier Lacot | 6 Décembre 2011
Sommaire


  1. Pourquoi Titanium mobile ?
  2. Qu'est-ce que Titanium mobile ?
        ■   Mode de fonctionnement
        ■   Principes de développement
  3. Démarrer avec Titanium
        ■   Outillage et Documentation
  4. Tour des APIs disponibles
  5. Démonstration simple

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile          3
Xavier Lacot | 6 Décembre 2011
Un large panel de solutions disponibles




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile           4
Xavier Lacot | 6 Décembre 2011
WebApp vs. App natives

                                           WebApp                              App native

    Portabilité                           Navigateur Web : toutes              Développement spécifique
                                          plateformes

    Référencement                         Moteurs de recherche                 Référencement dans les App
                                          classiques                           Stores

    Accessibilité                         Peu de contraintes                   Dépendant de la validation
                                          Mode offline impossible              Mode offline possible
                                          Dépend de la techno du               Performance maximale
    Performance                           serveur, de la connexion, ...        (exécuté sur le mobile)
                                          Mise à jour instantanée sur le       Dépend du processus de
    Mises à jour                          serveur                              validation sur le store
                                          Limité aux capacités des             Plus de possibilités, plus riche :
    Effet « Waouw »                       navigateurs mobiles                  nécessité marketing

                                          Compétences classiques               Compétences plus rares et
    Coût de développement                 Coût limité                          éparses. Coût généralement
                                                                               plus élevé.


Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                                        5
Xavier Lacot | 6 Décembre 2011
Parts de marché




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                 6
Xavier Lacot | 6 Décembre 2011
Le choix des développeurs...




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                    7
Xavier Lacot | 6 Décembre 2011
Constat


  ■   Constat :
       ■   Développements natifs compliqués
       ■   Piles applicatives différentes => plusieurs développements nécessaires
       ■   Difficile d'anticiper les évolutions de chaque système
       ■   Risqué de miser sur des compétences potentiellement inutiles dans les
           années à venir
  ■   Besoin d'un framework d'abstraction
       ■   Mutualiser les développements
       ■   Développer plus rapidement
       ■   Industrialiser (tests unitaires, intégration continue, etc.)
       ■   Établir un choix pérenne


Paris Android User Group - Développement Cross-Platform avec Titanium Mobile         8
Xavier Lacot | 6 Décembre 2011
Sommaire


  1. Pourquoi Titanium mobile ?
  2. Qu'est-ce que Titanium mobile ?
        ■   Mode de fonctionnement
        ■   Principes de développement
  3. Démarrer avec Titanium
        ■   Outillage et Documentation
  4. Tour des APIs disponibles
  5. Démonstration simple

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile          9
Xavier Lacot | 6 Décembre 2011
« Titanium is an open source framework
      for building native desktop and mobile
     applications using open web technologies
         (HTML, CSS, and JavaScript) »




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile   10
Xavier Lacot | 6 Décembre 2011
Titanium mobile


  ■   Framework
       ■   Open Source
       ■   Sponsor : Appcelerator
       ■   Apparu en août 2009
  ■   Développement en javascript
  ■   Cross-Plateformes
       ■   iOS, Android, (BlackBerry)
  ■   Bilan :
       ■   Applications natives avec un look natif
       ■   APIs identiques suivant les cibles
       ■   Look natif → adapté à la plupart de vos applications !

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                 11
Xavier Lacot | 6 Décembre 2011
Trois bonnes raisons pour Titanium...


  ■   Langages Web très populaires
       ■   Faciles à apprendre
       ■   Très répandus
  ■   Standards ouverts
       ■   Cross platform
       ■   Codez une fois, déployez plusieurs !
  ■   Applications natives
       ■   Rapides
       ■   Mode offline
       ■   Accès aux fonctionnalités matérielles
       ■   Actives en tâche de fond
Paris Android User Group - Développement Cross-Platform avec Titanium Mobile             12
Xavier Lacot | 6 Décembre 2011
Et encore plus...


       Deux frameworks distincts :
        ■   Un framework « desktop », Titanium Desktop
              ■   Javascript,
              ■   PHP,
              ■   Python,
              ■   Ruby
        ■   Un framework « mobile »... Titanium Mobile !
              ■   HTML / CSS / javascript
              ■   En pratique js principalement, rarement HTML ou CSS



Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                  13
Xavier Lacot | 6 Décembre 2011
Architecture du framework




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                  14
Xavier Lacot | 6 Décembre 2011
Architecture du framework




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                  15
Xavier Lacot | 6 Décembre 2011
APIs offertes Titanium


  ■   Titanium.Analytics : statistiques et rapports d'utilisation
  ■   Titanium.API : logging
  ■   Titanium.App : informations liées à l'application
  ■   Titanium.Contacts: carnet d'adresse
  ■   Titanium.Database: bases de données
  ■   Titanium.Filesystem: système de fichiers
  ■   Titanium.Geolocation: géolocalisation
  ■   Titanium.Map: cartographie
  ■   Titanium.Network: réseau
  ■   Titanium.Platform: informations au sujet de la plateforme
  ■   Titanium.UI : tous les éléments d'interface
  ■   etc.

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                        16
Xavier Lacot | 6 Décembre 2011
Mécanismes de compilation (1/3)



                                                    Compilation                Compilation
    .js           Pré-compilation                   “front-end”                  “cible”




  ■    Analyse des dépendances (API requises, etc.)
  ■    Pré-validation du code javascript




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                 17
Xavier Lacot | 6 Décembre 2011
Mécanismes de compilation (2/3)



                                                    Compilation                Compilation
    .js           Pré-compilation                                                “cible”
                                                    “front-end”




  ■    Compilation des librairies de Titanium
  ■    Préparation à la compilation sur la plateforme
       cible (dépendances, etc.)



Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                 18
Xavier Lacot | 6 Décembre 2011
Mécanismes de compilation (3/3)



                                                    Compilation                Compilation
      .js         Pré-compilation                                                “cible”
                                                    “front-end”


  ■    Appel des outils de compilation fournis par les SDKs
  ■    IOS
        ■   transformation du js sous la forme de variables Objective-C
        ■   Interprétation à l'exécution par l'interpréteur javascript de l'iPhone
  ■    Android
        ■   Précompilation en bytecode,
        ■   Interprétation par Rhino (Mozilla) embarqué dans l'appli,
        ■   Bientôt par V8 (Titanium 1.8), bien plus performant

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                 19
Xavier Lacot | 6 Décembre 2011
Sommaire


  1. Pourquoi Titanium mobile ?
  2. Qu'est-ce que Titanium mobile ?
        ■   Mode de fonctionnement
        ■   Principes de développement
  3. Démarrer avec Titanium
        ■   Outillage et Documentation
  4. Tour des APIs disponibles
  5. Démonstration simple

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile         20
Xavier Lacot | 6 Décembre 2011
Principes de développement

      Titanium est peu contraignant
       ■   Possibilité d'appliquer des bonnes pratiques
       ■   … ou pas → de nombreux problèmes en perspective !


      Bonnes pratiques :
       ■   Pas de variables globales
       ■   Toujours utiliser l'opérateur de comparaison et non l'opérateur d'égalité
       ■   Utilisez l'opérateur ternaire
       ■   Conception modulaire
       ■   Validation JSLint / JSHint
       ■   Toujours utiliser le point virgule (« ; ») en fin de blocs d'instructions !

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                  21
Xavier Lacot | 6 Décembre 2011
Pas de variables globales

   // The bad                                                     // The good
   var key = 'value',                                             var application = {
       foo = 'bar',                                                   key: 'value',
       human = 'john';                                                foo: 'bar',
                                                                      human: 'john'
   function hello(name) {                                         };
       alert('Hello ' + world);
   }                                                              application.hello = function(name) {
                                                                      alert('Hello ' + world);
   function transform(value) {                                    };
       return 'Logging ' + value;
   }                                                              (function() {
                                                                      // locally defined function
   function log(text) {                                               function transform(value) {
       Titanium.API.log(                                                  return 'Logging ' + value;
           transform(text)                                            }
       );
   }                                                                  application.log = function(text) {
                                                                          Titanium.API.log(
   // call the function                                                       transform(text)
   log('Coucou poney!');                                                  );
                                                                      }
                                                                  })();

                                                                  // call the function
                                                                  application.log('Coucou poney!');


Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                               22
Xavier Lacot | 6 Décembre 2011
Opérateur de comparaison



    // utilisez === et non ==
    Ti.API.info(false == 0);                              //   true
    Ti.API.info(false == '');                             //   true
    Ti.API.info('' == 0);                                 //   true
    Ti.API.info(null == 0);                               //   true
    Ti.API.info(undefined == false);                      //   true
    Ti.API.info(NaN == 0);                                //   true

    // attention aux comparaisons de flottants
    Ti.API.info(0.3 + 0.4 === 0.7);   // false

    // attention à  typeof
    Ti.API.info(typeof null);                  // 'object'
    Ti.API.info(typeof NaN);                   // 'number'



         Voir http://wtfjs.com/ pour plus d'exemples...

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                23
Xavier Lacot | 6 Décembre 2011
Règles à ne pas négliger


  ■   À faire
      ■   Utiliser des noms de variable expressifs
      ■   Utiliser les coding standards fournies par Google : http://xav.cc/d7f90
      ■   Commenter votre code
  ■   Valider la syntaxe avec JSLint ou JSHint
      ■   http://www.jshint.com/
      ■   https://github.com/jshint/jshint
  ■   Utiliser de manière extensive (et savoir qu'on le fait) :
      ■   Les closures
      ■   L'héritage par prototypes
      ■   Le “require()” de CommonJS (cf. http://www.commonjs.org)

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                         24
Xavier Lacot | 6 Décembre 2011
Sommaire


  1. Pourquoi Titanium mobile ?
  2. Qu'est-ce que Titanium mobile ?
        ■   Mode de fonctionnement
        ■   Principes de développement
  3. Démarrer avec Titanium
        ■   Outillage et Documentation
  4. Tour des APIs disponibles
  5. Démonstration simple

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile         25
Xavier Lacot | 6 Décembre 2011
Titanium Developer


    ■   Abandonné
        début 2011


    ■   Pas d'IDE
        intégré




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                   26
Xavier Lacot | 6 Décembre 2011
Titanium Studio




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                27
Xavier Lacot | 6 Décembre 2011
Titanium Studio


  ■   Titanium Studio
      ■   Aptana, éditeur basé sur Eclipse
      ■   Racheté début 2011
      ■   Forte intégration avec les SDK


  ■   Permet :
      ■   De créer un projet
      ■   Debugger intégré
      ■   Auto-complétion / aide au code
      ■   De lancer les simulateurs / émulateurs iOS et Android


  ■   Inclus au moment de télécharger le framework

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                28
Xavier Lacot | 6 Décembre 2011
Premier projet




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile               29
Xavier Lacot | 6 Décembre 2011
Premier projet


                                                                               Project name :
                                                                                  nom du projet

                                                                               App Id :
                                                                                  identifiant de l'application,
                                                                                  très important

                                                                               Deployment targets :
                                                                                  choix des plateformes
                                                                                  cibles




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                                  30
Xavier Lacot | 6 Décembre 2011
Premier projet




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                31
Xavier Lacot | 6 Décembre 2011
Contenu d'un projet

                                               ■   build : dossier de compilation
                                               ■   Resources :
                                                   ■   le code de l'application
                                                   ■   tous les assets (images, etc.)
                                                   ■   éventuellement une base SQLite
                                                   ■   éventuellement des modules natifs
                                               ■   tiapp.xml : les directives de configuration
                                                   et de compilation
                                                   ■   Noms, icône et copyright
                                                   ■   Full screen ?
                                                   ■   Analytics ?
                                                   ■   Différents paramètres

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                    32
Xavier Lacot | 6 Décembre 2011
Cross-platform...




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                  33
Xavier Lacot | 6 Décembre 2011
Documentation, aide et exemples


  ■   Documentation :
      ■   API : votre meilleure amie ! http://developer.appcelerator.com/apidoc/mobile/latest
      ■   Référence, littérature (assez) exhaustive : http://wiki.appcelerator.org/display/guides/Home


  ■   Aide :
      ■   Questions : http://developer.appcelerator.com/questions
      ■   Vidéos : http://vimeopro.com/appcelerator/forging-titanium
      ■   Cours vidéo : http://vimeopro.com/appcelerator/building-native-mobile-applications


  ■   Exemples :
      ■   KitchenSink http://github.com/appcelerator/KitchenSink
      ■   Application multiplateformes : https://github.com/appcelerator/Codestrong


Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                      34
Xavier Lacot | 6 Décembre 2011
Tests unitaires et qualité


  ■   Objectifs :
       ■   Tester certaines parties de l'application automatiquement
       ■   Mettre en place des tests automatiques réguliers
       ■   Améliorer la qualité
       ■   Détecter et corriger les problèmes en avance


  ■   Plusieurs solutions possibles
       ■   Titanium Jasmise -
           https://github.com/guilhermechapiewski/titanium-jasmine
       ■   JsUnity – http://jsunity.com
       ■   Qunit pour Titanium - http://github.com/lukaso/qunit

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                           35
Xavier Lacot | 6 Décembre 2011
Tests unitaires et qualité


  ■   Utilisation de Titanium jasmine
      ■   Exemple : utilisé pour tester joli.js

          (function() {
            describe('joli.query', function() {
              var q;

               it('joli.query.destroy()', function() {
                 q = new joli.query().destroy().from('human');
                 expect(q.getQuery()).toBe('delete from human');
               });

            });
          })();



  ■   Principe : assertions (expect()) et
      vérifications (toBe())
  ■   Bien mais pas aussi puissant qu'un PHPUnit...

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                           36
Xavier Lacot | 6 Décembre 2011
Sommaire


  1. Pourquoi Titanium mobile ?
  2. Qu'est-ce que Titanium mobile ?
        ■   Mode de fonctionnement
        ■   Principes de développement
  3. Démarrer avec Titanium
        ■   Outillage et Documentation
  4. Tour des APIs disponibles
  5. Démonstration simple

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile          37
Xavier Lacot | 6 Décembre 2011
Gestion des fenêtres




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                     38
Xavier Lacot | 6 Décembre 2011
Vues


  ■   La composition graphique se fait avec des vues :
       ■   Image view
       ■   Scroll view
       ■   Scrollable view
       ■   Table view
       ■   Web view
       ■   Map view
       ■   Coverflow view
       ■   Dashboard view
  ■   Une vue peut en contenir une autre
  ■   Analogie à Swing...

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile     39
Xavier Lacot | 6 Décembre 2011
Image view


     Insertion d'images
      ■   Le paramètre « image » peut être
          une url
    var win = Titanium.UI.currentWindow;
    var imageView = Titanium.UI.createImageView({
        image: 'titanium.png',
        width: 261,
        height: 178,
        top: 20
    });

    imageView.addEventListener('load', function()
    {
        Ti.API.info('LOAD CALLED');
    });

    win.add(imageView);



Paris Android User Group - Développement Cross-Platform avec Titanium Mobile           40
Xavier Lacot | 6 Décembre 2011
Table view


■    Données tabulaires
      ■   Possibilité de headers
      ■   Chaque cellule peut contenir des contrôles
    var data = [
       {title: 'Alan', hasChild: true, header: 'A'},
       {title: 'Alice', hasDetail: true},
       {title: 'Brad', header: 'B'},
       {title: 'Brenda'},
       {title: 'Callie', header: 'C'},
       {title: 'Chris'},
    ];
    var search = Titanium.UI.createSearchBar({
       showCancel: false
    });

    // create table view
    var tableview = Titanium.UI.createTableView({
      data: data,
      search: search,
      filterAttribute: 'title'
    });
    win.add(tableview);



Paris Android User Group - Développement Cross-Platform avec Titanium Mobile            41
Xavier Lacot | 6 Décembre 2011
Widgets


       Les éléments d'interface avec lesquels l'utilisateur
       peut interagir :

                         Activity Indicator                                    Label
                          (Date) picker                                        Slider
                            Progress bar                                       Switch
                             Search bar                                        Button
                             Button bar                                        Toolbar
                               Textarea                                    Textfield
Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                  42
Xavier Lacot | 6 Décembre 2011
Widgets




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile        43
Xavier Lacot | 6 Décembre 2011
Widgets


  ■    Construction par appel du constructeur dans Ti.UI
        ■   Paramètres nombreux et variés
  ■    API permettant de manipuler les widgets
  ■    Interactions associées à des évènements
        ■   click
        ■   swipe
        ■   touchend
        ■   etc.


Paris Android User Group - Développement Cross-Platform avec Titanium Mobile        44
Xavier Lacot | 6 Décembre 2011
APIs matérielles


     Titanium donne accès à un grand nombre d'APIs natives de l'appareil :
      ■   Accéléromètre
      ■   Caméra
      ■   Médias
      ■   Géolocalisation
      ■   Réseau
      ■   Base de données
      ■   Presse papier
      ■   etc.
     Toutes ces APIs sont exposées sous Titanium.*
      ■   Exploitables en javascript
      ■   Exploitables depuis les Webview depuis du HTML local


Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                 45
Xavier Lacot | 6 Décembre 2011
Paris Android User Group - Développement Cross-Platform avec Titanium Mobile   46
Xavier Lacot | 6 Décembre 2011
Exemple : Titanium.Media

■   accès aux interactions de type « Média »
     ■   Enregistrement / lecture de photos et vidéos
     ■   Enregistrement / lecture de sons ou de morceaux de musique
■   Caméra :
     ■   que sur un vrai device, pas en simulateur
     ■   showCamera()
          ■   callbacks                                       ■   allowEditing
          ■   mediaTypes                                      ■   showControls
          ■   SaveToPhotoGallery                              ■   Overlay


     ■   takePicture()                                   ■   saveToPhotoGallery()
     ■   hideCamera()
Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                  47
Xavier Lacot | 6 Décembre 2011
Exemple : Titanium.Media

    var win = Titanium.UI.currentWindow;
    Titanium.Media.showCamera({
        success: function(event) {
            var image = event.media;

                if (event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO) {
                    var imageView = Ti.UI.createImageView({
                        width: win.width,
                        height: win.height,
                        image: event.media
                    });
                    win.add(imageView);
                } else {
                    alert('Take a picture. Illegal type ' + event.mediaType);
                }
          },
          cancel: function() {},
          error: function(error) {
              // show an error message
              // test error code Titanium.Media.NO_CAMERA
          },
          saveToPhotoGallery: true,
          mediaTypes: [Ti.Media.MEDIA_TYPE_VIDEO, Ti.Media.MEDIA_TYPE_PHOTO]
    });


Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                  48
Xavier Lacot | 6 Décembre 2011
Organiser son application


  ■   Ne faites pas des fichiers de 1500 lignes !
  ■   Utilisez       Titanium.include()                  (ou require())
  ■   Concevez des modules js
  ■   Pseudo-MVC possible
       ■   Logique métier dans “contrôleur”
       ■   Affichage dans un fichier de vue
       ■   ORMs existants (joli.js FTW – voir
           https://github.com/xavierlacot/joli.js)


      Si vous n'êtes pas méticuleux, vous irez dans le mur
Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                    49
Xavier Lacot | 6 Décembre 2011
Sommaire


  1. Pourquoi Titanium mobile ?
  2. Qu'est-ce que Titanium mobile ?
        ■   Mode de fonctionnement
        ■   Principes de développement
  3. Démarrer avec Titanium
        ■   Outillage et Documentation
  4. Tour des APIs disponibles
  5. Démonstration simple

Paris Android User Group - Développement Cross-Platform avec Titanium Mobile         50
Xavier Lacot | 6 Décembre 2011
Du temps pour une démo ?


                                                    ■   Un carnet d'adresses
                                                        synchronisé par des Web
                                                        Services
                                                    ■   Le code source est
                                                        disponible sur
                                                        https://github.com/xavierlacot/joli.api.js-app-demo




Paris Android User Group - Développement Cross-Platform avec Titanium Mobile                                  51
Xavier Lacot | 6 Décembre 2011
STOP WHINING
                                                                         STOP WHINING
                                                                           MORRON
                                                                            MORRON


                                                                                GO USE
                                                                                GO USE
                                                                               TITANIUM
                                                                               TITANIUM



Paris Android User Group - Développement Cross-Platform avec Titanium Mobile              52
Xavier Lacot | 6 Décembre 2011
?
   Des
questions ?
Développement Cross-Platform avec Titanium Mobile

Más contenido relacionado

Destacado

La Programmation Orienté Objet en VB.Net
La Programmation Orienté Objet en VB.NetLa Programmation Orienté Objet en VB.Net
La Programmation Orienté Objet en VB.NetAli Ben Amor
 
Tp antivirus bis
Tp antivirus bisTp antivirus bis
Tp antivirus bisChris Dogny
 
Creer une carte de noël(2)
Creer une carte de noël(2)Creer une carte de noël(2)
Creer une carte de noël(2)jacques
 
Créer des planches de cartes (visite, voeux, remerciement...)
Créer des planches de cartes (visite, voeux, remerciement...)Créer des planches de cartes (visite, voeux, remerciement...)
Créer des planches de cartes (visite, voeux, remerciement...)jacques
 
Shell sans les coquilles
Shell sans les coquillesShell sans les coquilles
Shell sans les coquillesÉdouard Lopez
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)rezgui mohamed
 

Destacado (11)

La Programmation Orienté Objet en VB.Net
La Programmation Orienté Objet en VB.NetLa Programmation Orienté Objet en VB.Net
La Programmation Orienté Objet en VB.Net
 
Tp antivirus bis
Tp antivirus bisTp antivirus bis
Tp antivirus bis
 
Creer une carte de noël(2)
Creer une carte de noël(2)Creer une carte de noël(2)
Creer une carte de noël(2)
 
Tutoriel1
Tutoriel1Tutoriel1
Tutoriel1
 
Tp routage
Tp routageTp routage
Tp routage
 
Créer des planches de cartes (visite, voeux, remerciement...)
Créer des planches de cartes (visite, voeux, remerciement...)Créer des planches de cartes (visite, voeux, remerciement...)
Créer des planches de cartes (visite, voeux, remerciement...)
 
Shell sans les coquilles
Shell sans les coquillesShell sans les coquilles
Shell sans les coquilles
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Mongo db with C#
Mongo db with C#Mongo db with C#
Mongo db with C#
 

Similar a Développement Cross-Platform avec Titanium Mobile

Présentation RIA avec Adobe Flex / RIA with Adobe Flex
Présentation RIA avec Adobe Flex / RIA with Adobe FlexPrésentation RIA avec Adobe Flex / RIA with Adobe Flex
Présentation RIA avec Adobe Flex / RIA with Adobe FlexCynapsys It Hotspot
 
PhoneGap VS Appcelerator
PhoneGap VS AppceleratorPhoneGap VS Appcelerator
PhoneGap VS AppceleratorTiyab K.
 
Parlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageParlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageLaFrenchMobile
 
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !Rossi Oddet
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8Microsoft
 
Wygday 2011 - Introduction à HTML5
Wygday 2011 - Introduction à HTML5Wygday 2011 - Introduction à HTML5
Wygday 2011 - Introduction à HTML5wyggio
 
Firefox os appdays paris par tristan nitot: Hack, Learn, Celebrate
Firefox os appdays paris par tristan nitot: Hack, Learn, CelebrateFirefox os appdays paris par tristan nitot: Hack, Learn, Celebrate
Firefox os appdays paris par tristan nitot: Hack, Learn, CelebrateTristan Nitot
 
Offre migrer vers_flutter
Offre migrer vers_flutterOffre migrer vers_flutter
Offre migrer vers_flutterJulien Saumande
 
Passage aux applications mobiles
Passage aux applications mobilesPassage aux applications mobiles
Passage aux applications mobilesneuros
 
Conférence windows phone 7
Conférence windows phone 7Conférence windows phone 7
Conférence windows phone 7Arnaud Auroux
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologiewyggio
 
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
 
Développement d'applications mobiles hybrides natives - Comparatif
Développement d'applications mobiles hybrides natives - ComparatifDéveloppement d'applications mobiles hybrides natives - Comparatif
Développement d'applications mobiles hybrides natives - ComparatifDjamel ZAHAL
 
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...Guillaume Brout
 
Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.DocDoku
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobilesAbdoulaye Dieng
 

Similar a Développement Cross-Platform avec Titanium Mobile (20)

Présentation RIA avec Adobe Flex / RIA with Adobe Flex
Présentation RIA avec Adobe Flex / RIA with Adobe FlexPrésentation RIA avec Adobe Flex / RIA with Adobe Flex
Présentation RIA avec Adobe Flex / RIA with Adobe Flex
 
PhoneGap VS Appcelerator
PhoneGap VS AppceleratorPhoneGap VS Appcelerator
PhoneGap VS Appcelerator
 
Parlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageParlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usage
 
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
Wygday 2011 - Introduction à HTML5
Wygday 2011 - Introduction à HTML5Wygday 2011 - Introduction à HTML5
Wygday 2011 - Introduction à HTML5
 
Firefox os appdays paris par tristan nitot: Hack, Learn, Celebrate
Firefox os appdays paris par tristan nitot: Hack, Learn, CelebrateFirefox os appdays paris par tristan nitot: Hack, Learn, Celebrate
Firefox os appdays paris par tristan nitot: Hack, Learn, Celebrate
 
Offre migrer vers_flutter
Offre migrer vers_flutterOffre migrer vers_flutter
Offre migrer vers_flutter
 
Passage aux applications mobiles
Passage aux applications mobilesPassage aux applications mobiles
Passage aux applications mobiles
 
Conférence windows phone 7
Conférence windows phone 7Conférence windows phone 7
Conférence windows phone 7
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologie
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
 
Développement d'applications mobiles hybrides natives - Comparatif
Développement d'applications mobiles hybrides natives - ComparatifDéveloppement d'applications mobiles hybrides natives - Comparatif
Développement d'applications mobiles hybrides natives - Comparatif
 
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
 
Meetup sencha
Meetup senchaMeetup sencha
Meetup sencha
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.
 
Apple - WWDC 2018
Apple - WWDC 2018Apple - WWDC 2018
Apple - WWDC 2018
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
 
RIA
RIARIA
RIA
 

Más de Xavier Lacot

Symfony2 components to the rescue of your PHP projects
Symfony2 components to the rescue of your PHP projectsSymfony2 components to the rescue of your PHP projects
Symfony2 components to the rescue of your PHP projectsXavier Lacot
 
Keynote d'ouverture - Forum PHP 2012
Keynote d'ouverture - Forum PHP 2012Keynote d'ouverture - Forum PHP 2012
Keynote d'ouverture - Forum PHP 2012Xavier Lacot
 
Keynote de clôture - PHP Tour 2011
Keynote de clôture - PHP Tour 2011Keynote de clôture - PHP Tour 2011
Keynote de clôture - PHP Tour 2011Xavier Lacot
 
Abstracting databases access in Titanium Mobile
Abstracting databases access in Titanium MobileAbstracting databases access in Titanium Mobile
Abstracting databases access in Titanium MobileXavier Lacot
 
RESTful avec symfony 1 et Symfony2
RESTful avec symfony 1 et Symfony2RESTful avec symfony 1 et Symfony2
RESTful avec symfony 1 et Symfony2Xavier Lacot
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 
Symfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsSymfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsXavier Lacot
 

Más de Xavier Lacot (7)

Symfony2 components to the rescue of your PHP projects
Symfony2 components to the rescue of your PHP projectsSymfony2 components to the rescue of your PHP projects
Symfony2 components to the rescue of your PHP projects
 
Keynote d'ouverture - Forum PHP 2012
Keynote d'ouverture - Forum PHP 2012Keynote d'ouverture - Forum PHP 2012
Keynote d'ouverture - Forum PHP 2012
 
Keynote de clôture - PHP Tour 2011
Keynote de clôture - PHP Tour 2011Keynote de clôture - PHP Tour 2011
Keynote de clôture - PHP Tour 2011
 
Abstracting databases access in Titanium Mobile
Abstracting databases access in Titanium MobileAbstracting databases access in Titanium Mobile
Abstracting databases access in Titanium Mobile
 
RESTful avec symfony 1 et Symfony2
RESTful avec symfony 1 et Symfony2RESTful avec symfony 1 et Symfony2
RESTful avec symfony 1 et Symfony2
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 
Symfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsSymfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating products
 

Développement Cross-Platform avec Titanium Mobile

  • 1. Développement Cross-Platform avec Titanium Mobile Xavier Lacot – 06 Décembre 2011
  • 2. Qui suis-je ? Xavier Lacot ■ Clever Age ■ Dirige le centre d'expertise ■ Leader technique du pôle PHP ■ Contributeur à plusieurs projets Open Source ■ Développeur Titanium depuis 2009 ■ Expert frameworks Web ■ Vice Président De l'Association Française des Utilisateurs de PHP (afup.org) ■ http://twitter.com/xavierlacot Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 2 Xavier Lacot | 6 Décembre 2011
  • 3. Sommaire 1. Pourquoi Titanium mobile ? 2. Qu'est-ce que Titanium mobile ? ■ Mode de fonctionnement ■ Principes de développement 3. Démarrer avec Titanium ■ Outillage et Documentation 4. Tour des APIs disponibles 5. Démonstration simple Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 3 Xavier Lacot | 6 Décembre 2011
  • 4. Un large panel de solutions disponibles Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 4 Xavier Lacot | 6 Décembre 2011
  • 5. WebApp vs. App natives WebApp App native Portabilité Navigateur Web : toutes Développement spécifique plateformes Référencement Moteurs de recherche Référencement dans les App classiques Stores Accessibilité Peu de contraintes Dépendant de la validation Mode offline impossible Mode offline possible Dépend de la techno du Performance maximale Performance serveur, de la connexion, ... (exécuté sur le mobile) Mise à jour instantanée sur le Dépend du processus de Mises à jour serveur validation sur le store Limité aux capacités des Plus de possibilités, plus riche : Effet « Waouw » navigateurs mobiles nécessité marketing Compétences classiques Compétences plus rares et Coût de développement Coût limité éparses. Coût généralement plus élevé. Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 5 Xavier Lacot | 6 Décembre 2011
  • 6. Parts de marché Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 6 Xavier Lacot | 6 Décembre 2011
  • 7. Le choix des développeurs... Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 7 Xavier Lacot | 6 Décembre 2011
  • 8. Constat ■ Constat : ■ Développements natifs compliqués ■ Piles applicatives différentes => plusieurs développements nécessaires ■ Difficile d'anticiper les évolutions de chaque système ■ Risqué de miser sur des compétences potentiellement inutiles dans les années à venir ■ Besoin d'un framework d'abstraction ■ Mutualiser les développements ■ Développer plus rapidement ■ Industrialiser (tests unitaires, intégration continue, etc.) ■ Établir un choix pérenne Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 8 Xavier Lacot | 6 Décembre 2011
  • 9. Sommaire 1. Pourquoi Titanium mobile ? 2. Qu'est-ce que Titanium mobile ? ■ Mode de fonctionnement ■ Principes de développement 3. Démarrer avec Titanium ■ Outillage et Documentation 4. Tour des APIs disponibles 5. Démonstration simple Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 9 Xavier Lacot | 6 Décembre 2011
  • 10. « Titanium is an open source framework for building native desktop and mobile applications using open web technologies (HTML, CSS, and JavaScript) » Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 10 Xavier Lacot | 6 Décembre 2011
  • 11. Titanium mobile ■ Framework ■ Open Source ■ Sponsor : Appcelerator ■ Apparu en août 2009 ■ Développement en javascript ■ Cross-Plateformes ■ iOS, Android, (BlackBerry) ■ Bilan : ■ Applications natives avec un look natif ■ APIs identiques suivant les cibles ■ Look natif → adapté à la plupart de vos applications ! Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 11 Xavier Lacot | 6 Décembre 2011
  • 12. Trois bonnes raisons pour Titanium... ■ Langages Web très populaires ■ Faciles à apprendre ■ Très répandus ■ Standards ouverts ■ Cross platform ■ Codez une fois, déployez plusieurs ! ■ Applications natives ■ Rapides ■ Mode offline ■ Accès aux fonctionnalités matérielles ■ Actives en tâche de fond Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 12 Xavier Lacot | 6 Décembre 2011
  • 13. Et encore plus... Deux frameworks distincts : ■ Un framework « desktop », Titanium Desktop ■ Javascript, ■ PHP, ■ Python, ■ Ruby ■ Un framework « mobile »... Titanium Mobile ! ■ HTML / CSS / javascript ■ En pratique js principalement, rarement HTML ou CSS Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 13 Xavier Lacot | 6 Décembre 2011
  • 14. Architecture du framework Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 14 Xavier Lacot | 6 Décembre 2011
  • 15. Architecture du framework Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 15 Xavier Lacot | 6 Décembre 2011
  • 16. APIs offertes Titanium ■ Titanium.Analytics : statistiques et rapports d'utilisation ■ Titanium.API : logging ■ Titanium.App : informations liées à l'application ■ Titanium.Contacts: carnet d'adresse ■ Titanium.Database: bases de données ■ Titanium.Filesystem: système de fichiers ■ Titanium.Geolocation: géolocalisation ■ Titanium.Map: cartographie ■ Titanium.Network: réseau ■ Titanium.Platform: informations au sujet de la plateforme ■ Titanium.UI : tous les éléments d'interface ■ etc. Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 16 Xavier Lacot | 6 Décembre 2011
  • 17. Mécanismes de compilation (1/3) Compilation Compilation .js Pré-compilation “front-end” “cible” ■ Analyse des dépendances (API requises, etc.) ■ Pré-validation du code javascript Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 17 Xavier Lacot | 6 Décembre 2011
  • 18. Mécanismes de compilation (2/3) Compilation Compilation .js Pré-compilation “cible” “front-end” ■ Compilation des librairies de Titanium ■ Préparation à la compilation sur la plateforme cible (dépendances, etc.) Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 18 Xavier Lacot | 6 Décembre 2011
  • 19. Mécanismes de compilation (3/3) Compilation Compilation .js Pré-compilation “cible” “front-end” ■ Appel des outils de compilation fournis par les SDKs ■ IOS ■ transformation du js sous la forme de variables Objective-C ■ Interprétation à l'exécution par l'interpréteur javascript de l'iPhone ■ Android ■ Précompilation en bytecode, ■ Interprétation par Rhino (Mozilla) embarqué dans l'appli, ■ Bientôt par V8 (Titanium 1.8), bien plus performant Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 19 Xavier Lacot | 6 Décembre 2011
  • 20. Sommaire 1. Pourquoi Titanium mobile ? 2. Qu'est-ce que Titanium mobile ? ■ Mode de fonctionnement ■ Principes de développement 3. Démarrer avec Titanium ■ Outillage et Documentation 4. Tour des APIs disponibles 5. Démonstration simple Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 20 Xavier Lacot | 6 Décembre 2011
  • 21. Principes de développement Titanium est peu contraignant ■ Possibilité d'appliquer des bonnes pratiques ■ … ou pas → de nombreux problèmes en perspective ! Bonnes pratiques : ■ Pas de variables globales ■ Toujours utiliser l'opérateur de comparaison et non l'opérateur d'égalité ■ Utilisez l'opérateur ternaire ■ Conception modulaire ■ Validation JSLint / JSHint ■ Toujours utiliser le point virgule (« ; ») en fin de blocs d'instructions ! Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 21 Xavier Lacot | 6 Décembre 2011
  • 22. Pas de variables globales // The bad // The good var key = 'value', var application = { foo = 'bar', key: 'value', human = 'john'; foo: 'bar', human: 'john' function hello(name) { }; alert('Hello ' + world); } application.hello = function(name) { alert('Hello ' + world); function transform(value) { }; return 'Logging ' + value; } (function() { // locally defined function function log(text) { function transform(value) { Titanium.API.log( return 'Logging ' + value; transform(text) } ); } application.log = function(text) { Titanium.API.log( // call the function transform(text) log('Coucou poney!'); ); } })(); // call the function application.log('Coucou poney!'); Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 22 Xavier Lacot | 6 Décembre 2011
  • 23. Opérateur de comparaison // utilisez === et non == Ti.API.info(false == 0); // true Ti.API.info(false == ''); // true Ti.API.info('' == 0); // true Ti.API.info(null == 0); // true Ti.API.info(undefined == false); // true Ti.API.info(NaN == 0); // true // attention aux comparaisons de flottants Ti.API.info(0.3 + 0.4 === 0.7); // false // attention à  typeof Ti.API.info(typeof null); // 'object' Ti.API.info(typeof NaN); // 'number' Voir http://wtfjs.com/ pour plus d'exemples... Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 23 Xavier Lacot | 6 Décembre 2011
  • 24. Règles à ne pas négliger ■ À faire ■ Utiliser des noms de variable expressifs ■ Utiliser les coding standards fournies par Google : http://xav.cc/d7f90 ■ Commenter votre code ■ Valider la syntaxe avec JSLint ou JSHint ■ http://www.jshint.com/ ■ https://github.com/jshint/jshint ■ Utiliser de manière extensive (et savoir qu'on le fait) : ■ Les closures ■ L'héritage par prototypes ■ Le “require()” de CommonJS (cf. http://www.commonjs.org) Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 24 Xavier Lacot | 6 Décembre 2011
  • 25. Sommaire 1. Pourquoi Titanium mobile ? 2. Qu'est-ce que Titanium mobile ? ■ Mode de fonctionnement ■ Principes de développement 3. Démarrer avec Titanium ■ Outillage et Documentation 4. Tour des APIs disponibles 5. Démonstration simple Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 25 Xavier Lacot | 6 Décembre 2011
  • 26. Titanium Developer ■ Abandonné début 2011 ■ Pas d'IDE intégré Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 26 Xavier Lacot | 6 Décembre 2011
  • 27. Titanium Studio Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 27 Xavier Lacot | 6 Décembre 2011
  • 28. Titanium Studio ■ Titanium Studio ■ Aptana, éditeur basé sur Eclipse ■ Racheté début 2011 ■ Forte intégration avec les SDK ■ Permet : ■ De créer un projet ■ Debugger intégré ■ Auto-complétion / aide au code ■ De lancer les simulateurs / émulateurs iOS et Android ■ Inclus au moment de télécharger le framework Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 28 Xavier Lacot | 6 Décembre 2011
  • 29. Premier projet Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 29 Xavier Lacot | 6 Décembre 2011
  • 30. Premier projet Project name : nom du projet App Id : identifiant de l'application, très important Deployment targets : choix des plateformes cibles Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 30 Xavier Lacot | 6 Décembre 2011
  • 31. Premier projet Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 31 Xavier Lacot | 6 Décembre 2011
  • 32. Contenu d'un projet ■ build : dossier de compilation ■ Resources : ■ le code de l'application ■ tous les assets (images, etc.) ■ éventuellement une base SQLite ■ éventuellement des modules natifs ■ tiapp.xml : les directives de configuration et de compilation ■ Noms, icône et copyright ■ Full screen ? ■ Analytics ? ■ Différents paramètres Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 32 Xavier Lacot | 6 Décembre 2011
  • 33. Cross-platform... Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 33 Xavier Lacot | 6 Décembre 2011
  • 34. Documentation, aide et exemples ■ Documentation : ■ API : votre meilleure amie ! http://developer.appcelerator.com/apidoc/mobile/latest ■ Référence, littérature (assez) exhaustive : http://wiki.appcelerator.org/display/guides/Home ■ Aide : ■ Questions : http://developer.appcelerator.com/questions ■ Vidéos : http://vimeopro.com/appcelerator/forging-titanium ■ Cours vidéo : http://vimeopro.com/appcelerator/building-native-mobile-applications ■ Exemples : ■ KitchenSink http://github.com/appcelerator/KitchenSink ■ Application multiplateformes : https://github.com/appcelerator/Codestrong Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 34 Xavier Lacot | 6 Décembre 2011
  • 35. Tests unitaires et qualité ■ Objectifs : ■ Tester certaines parties de l'application automatiquement ■ Mettre en place des tests automatiques réguliers ■ Améliorer la qualité ■ Détecter et corriger les problèmes en avance ■ Plusieurs solutions possibles ■ Titanium Jasmise - https://github.com/guilhermechapiewski/titanium-jasmine ■ JsUnity – http://jsunity.com ■ Qunit pour Titanium - http://github.com/lukaso/qunit Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 35 Xavier Lacot | 6 Décembre 2011
  • 36. Tests unitaires et qualité ■ Utilisation de Titanium jasmine ■ Exemple : utilisé pour tester joli.js (function() { describe('joli.query', function() { var q; it('joli.query.destroy()', function() { q = new joli.query().destroy().from('human'); expect(q.getQuery()).toBe('delete from human'); }); }); })(); ■ Principe : assertions (expect()) et vérifications (toBe()) ■ Bien mais pas aussi puissant qu'un PHPUnit... Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 36 Xavier Lacot | 6 Décembre 2011
  • 37. Sommaire 1. Pourquoi Titanium mobile ? 2. Qu'est-ce que Titanium mobile ? ■ Mode de fonctionnement ■ Principes de développement 3. Démarrer avec Titanium ■ Outillage et Documentation 4. Tour des APIs disponibles 5. Démonstration simple Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 37 Xavier Lacot | 6 Décembre 2011
  • 38. Gestion des fenêtres Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 38 Xavier Lacot | 6 Décembre 2011
  • 39. Vues ■ La composition graphique se fait avec des vues : ■ Image view ■ Scroll view ■ Scrollable view ■ Table view ■ Web view ■ Map view ■ Coverflow view ■ Dashboard view ■ Une vue peut en contenir une autre ■ Analogie à Swing... Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 39 Xavier Lacot | 6 Décembre 2011
  • 40. Image view Insertion d'images ■ Le paramètre « image » peut être une url var win = Titanium.UI.currentWindow; var imageView = Titanium.UI.createImageView({ image: 'titanium.png', width: 261, height: 178, top: 20 }); imageView.addEventListener('load', function() { Ti.API.info('LOAD CALLED'); }); win.add(imageView); Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 40 Xavier Lacot | 6 Décembre 2011
  • 41. Table view ■ Données tabulaires ■ Possibilité de headers ■ Chaque cellule peut contenir des contrôles var data = [ {title: 'Alan', hasChild: true, header: 'A'}, {title: 'Alice', hasDetail: true}, {title: 'Brad', header: 'B'}, {title: 'Brenda'}, {title: 'Callie', header: 'C'}, {title: 'Chris'}, ]; var search = Titanium.UI.createSearchBar({ showCancel: false }); // create table view var tableview = Titanium.UI.createTableView({ data: data, search: search, filterAttribute: 'title' }); win.add(tableview); Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 41 Xavier Lacot | 6 Décembre 2011
  • 42. Widgets Les éléments d'interface avec lesquels l'utilisateur peut interagir : Activity Indicator Label (Date) picker Slider Progress bar Switch Search bar Button Button bar Toolbar Textarea Textfield Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 42 Xavier Lacot | 6 Décembre 2011
  • 43. Widgets Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 43 Xavier Lacot | 6 Décembre 2011
  • 44. Widgets ■ Construction par appel du constructeur dans Ti.UI ■ Paramètres nombreux et variés ■ API permettant de manipuler les widgets ■ Interactions associées à des évènements ■ click ■ swipe ■ touchend ■ etc. Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 44 Xavier Lacot | 6 Décembre 2011
  • 45. APIs matérielles Titanium donne accès à un grand nombre d'APIs natives de l'appareil : ■ Accéléromètre ■ Caméra ■ Médias ■ Géolocalisation ■ Réseau ■ Base de données ■ Presse papier ■ etc. Toutes ces APIs sont exposées sous Titanium.* ■ Exploitables en javascript ■ Exploitables depuis les Webview depuis du HTML local Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 45 Xavier Lacot | 6 Décembre 2011
  • 46. Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 46 Xavier Lacot | 6 Décembre 2011
  • 47. Exemple : Titanium.Media ■ accès aux interactions de type « Média » ■ Enregistrement / lecture de photos et vidéos ■ Enregistrement / lecture de sons ou de morceaux de musique ■ Caméra : ■ que sur un vrai device, pas en simulateur ■ showCamera() ■ callbacks ■ allowEditing ■ mediaTypes ■ showControls ■ SaveToPhotoGallery ■ Overlay ■ takePicture() ■ saveToPhotoGallery() ■ hideCamera() Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 47 Xavier Lacot | 6 Décembre 2011
  • 48. Exemple : Titanium.Media var win = Titanium.UI.currentWindow; Titanium.Media.showCamera({ success: function(event) { var image = event.media; if (event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO) { var imageView = Ti.UI.createImageView({ width: win.width, height: win.height, image: event.media }); win.add(imageView); } else { alert('Take a picture. Illegal type ' + event.mediaType); } }, cancel: function() {}, error: function(error) { // show an error message // test error code Titanium.Media.NO_CAMERA }, saveToPhotoGallery: true, mediaTypes: [Ti.Media.MEDIA_TYPE_VIDEO, Ti.Media.MEDIA_TYPE_PHOTO] }); Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 48 Xavier Lacot | 6 Décembre 2011
  • 49. Organiser son application ■ Ne faites pas des fichiers de 1500 lignes ! ■ Utilisez Titanium.include() (ou require()) ■ Concevez des modules js ■ Pseudo-MVC possible ■ Logique métier dans “contrôleur” ■ Affichage dans un fichier de vue ■ ORMs existants (joli.js FTW – voir https://github.com/xavierlacot/joli.js) Si vous n'êtes pas méticuleux, vous irez dans le mur Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 49 Xavier Lacot | 6 Décembre 2011
  • 50. Sommaire 1. Pourquoi Titanium mobile ? 2. Qu'est-ce que Titanium mobile ? ■ Mode de fonctionnement ■ Principes de développement 3. Démarrer avec Titanium ■ Outillage et Documentation 4. Tour des APIs disponibles 5. Démonstration simple Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 50 Xavier Lacot | 6 Décembre 2011
  • 51. Du temps pour une démo ? ■ Un carnet d'adresses synchronisé par des Web Services ■ Le code source est disponible sur https://github.com/xavierlacot/joli.api.js-app-demo Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 51 Xavier Lacot | 6 Décembre 2011
  • 52. STOP WHINING STOP WHINING MORRON MORRON GO USE GO USE TITANIUM TITANIUM Paris Android User Group - Développement Cross-Platform avec Titanium Mobile 52 Xavier Lacot | 6 Décembre 2011
  • 53. ? Des questions ?