Connect(); 2016

Volume 31, numéro 12

Cet article a fait l'objet d'une traduction automatique.

Connect(); Mobile DevOps - Exploration de Visual Studio Mobile Center

Par Thomas Dohmke ; 2016

Les périphériques mobiles sont désormais au centre de l’écosystème technologique. De nombreuses personnes se sentent qu’ils ne peuvent pas passer leurs téléphones, tablettes et ordinateurs portables et les utiliser pour organiser les informations relatives à leur personnel et leur vie professionnelle. Le monde des affaires réagissent à cet et toutes les entreprises aujourd'hui sont pliée sur la transformation elle-même dans une entreprise mobile. Afin de réussir et prospérer, sociétés devra application mobile prise en charge pas un seul, mais une stratégie mobile multi-app. Cela est venu à appeler l’appification de l’entreprise moderne, la prolifération d’applications ciblées, hautement optimisées pour un groupe d’utilisateurs particulier ou pour des tâches spécifiques. Dans un monde appified, les équipes de développement ont fournir plusieurs applications avec plus de valeur aux clients, tandis que les plateformes mobiles qui exécutent ces applications sont en constante évolution et le nombre de périphériques est en constante évolution. Les applications plus grandes sont installées sur les appareils de plus de 1 milliard, avec des milliers de configurations du périphérique en fonction de critères tels que le fournisseur de langage, paramètres régionaux, taille ou le réseau écran.

Pour relever ces défis, Microsoft propose une solution de bout en bout basée sur trois piliers : Visual Studio et Xamarin permettent de créer des applications mobiles et de bureau pour toutes les principales plateformes. Microsoft Azure fournit des services de cloud puissant et flexible qui permet de démarrer ou d’étendre les actifs de l’infrastructure existante et de gérer des données entre des expériences client et serveur. Enfin, le processus d’opérations de développement Mobile vous permet de gérer le cycle de vie d’application et vous permet d’automatiser l’intégration, test, livraison et analyse de votre application. La version actuelle de cette pile Mobile DevOps se compose de plusieurs outils intégrés, mais sinon disparates, tels que Visual Studio Team Services (VSTS), Xamarin Test Cloud et HockeyApp. Microsoft a beaucoup appris de proposer ces produits dans ces dernières années, notamment comment les développeurs peuvent adopter les pratiques Mobile DevOps plus rapidement et avec moins de problèmes.

Dans cet article, je suis heureux d’annoncer la version préliminaire publique de notre produit, en combinant toutes les fonctionnalités d’une plate-forme unique : Visual Studio Mobile Center.

Le cycle de vie des applications mobiles

Pratiques de DevOps peuvent couvrir le processus de développement entier, mais ils ne sont pas un engagement tout ou rien. Similaire à un ensemble d’outils de ligne de commande, chaque pratique peut être utilisé seul, mais vous obtenez une valeur supplémentaire en combinant plusieurs pratiques. C’est exactement comment Mobile Center a été conçu. Il commence par une expérience d’intégration formidable pour les développeurs, notamment une conception d’API en premier, ce qui vous permet d’utiliser Mobile Center complètement via son API REST ou l’interface de ligne de commande (CLI). Chaque fonction permet de résoudre un problème spécifique et est utilisable que sur son propre.

Build, vous pouvez prendre votre code source dans n’importe quel référentiel Git et créer un package d’application peut être installé automatiquement avec chaque validation ou de push. De plus, vous n’avez pas besoin de configurer des agents ou externe d’ordinateurs qui exécutent Mac OS pour générer vos applications iOS. Mobile s’occupe de cela et compilera votre iOS et Android d’application vers la droite le code source, sans configuration manuelle de votre côté.

Une fois le processus de génération est terminé, vous souhaitez exécuter vos tests sur les périphériques réels. Test Cloud offre plus de 400 configurations d’appareil unique pour vérifier que le comportement de votre application. Les tests peuvent être écrits en c# (UITest), Ruby (Calabash) ou Java (Appium) et sont exécutées automatiquement après la réussite d’une build.

Lorsque tous les tests sont verts, votre application a besoin accéder à la main des testeurs, ce qui est exactement ce que propose la fonctionnalité de distribution. Entrez un jeu de messages électroniques, appelés groupes de Distribution, et vos utilisateurs peuvent installer l’application directement sur leurs téléphones, pour autant qu’ils seraient télécharger une application depuis l’app store. Mobile Center Build, de Test et de distribuer fonctionnent ensemble en toute transparence, pour chacune des validations de votre code obtient le niveau maximal de validation. Et aucune de ces fonctionnalités n’exige aucune modification de votre code.

L’étape suivante consiste à ajouter à l’application d’analyse. Si elle est automatisée de test, test manuel, une démonstration d’un client ou le lancement d’une nouvelle version dans le magasin d’applications, la collection de l’utilisation et les données de diagnostic est essentiel pour la réussite de votre application. En ajoutant le Kit de Développement Mobile Center, vous pouvez collecter les pannes et Analytique pour évaluer les problèmes de qualité, découvrez comment et où les clients sont à l’aide de votre application et améliorent et analyses en répondant à leurs demandes.

Le Kit de développement Logiciel permet également de deux autres fonctionnalités : Identité et Tables. Identité est le moyen le plus rapide pour authentifier les utilisateurs de votre application avec leur compte Google, Facebook, Twitter ou Microsoft. Tables vous permet de créer un magasin de cloud pour l’affichage, ajout ou modification des données d’application, même lorsqu’il n’existe aucune connexion réseau.

Figure 1 montre comment ces fonctionnalités permettent le cycle de vie des applications mobiles.

Le cycle de vie des applications mobiles avec Visual Studio Mobile Center
Figure 1 le cycle de vie des applications mobiles avec Visual Studio Mobile Center

Mise en route

S’inscrire pour Mobile Center est vraiment facile. Si vous avez déjà un compte HockeyApp, votre adresse de messagerie existante et le mot de passe continuera à fonctionner et de synchronisation entre les deux systèmes. Dans le cas contraire, vous pouvez créer un nouveau compte via le formulaire d’inscription, mais au lieu de cela, je veux vous montrer le flux le plus rapide pour la mise en route : Se connecter à GitHub. Si vous vivez sur GitHub que je fais, vous n’aurez pas à entrer votre mot de passe GitHub, vous verrez immédiatement indiquée dans la page d’authentification Figure 2. Simplement approuver l’accès et si vous tombez sur le tableau de bord centre Mobile avec un compte activé. Aucun message de confirmation, la carte de crédit ou les autres étapes de configuration nécessités.

Inscription à Mobile Center avec GitHub
Figure 2 inscrivant pour Mobile Center avec GitHub

Une fois votre compte est connecté à GitHub, vous êtes seulement quelques étapes en dehors de votre première génération. Créer votre application en entrant simplement son nom, puis choisissez votre référentiel Git et branche via le menu Générer, comme indiqué dans Figure 3. Mobile Center détecte automatiquement votre type de projet, sans que vous ayez à ajouter ou configurer des étapes de génération manuellement. Dans les coulisses, la génération de pipeline configure un ordinateur virtuel à compiler l’application, s’exécute tous les tests unitaires et signe le package d’application pour la distribution.

Sélection d’un référentiel GitHub de Build
Figure 3 sélection d’un référentiel GitHub de Build

Lorsque le processus de génération est terminée, vous pouvez télécharger le fichier de package d’application pour une installation locale, exécution de tests automatisés sur les périphériques réels à l’aide du Mobile Center Test, ou vous pouvez continuer avec la fonctionnalité de distribution pour expédier l’application pour les testeurs. Chaque membre de votre groupe de distribution reçoit une notification par courrier électronique pour installer l’application. Ouvrez le courrier électronique sur le téléphone, puis installer l’application à partir du navigateur.

Ajout du Kit de développement Logiciel

Pour les incidents et Analytique, vous devez ajouter le Kit de Développement Mobile Center à votre projet. Le SDK est conçu avec une architecture modulaire qui vous permet d’intégrer ces fonctionnalités dans votre application. Commençons par un exemple d’une application iOS. Tout d’abord, ajoutez les instructions import suivantes au début du fichier AppDelegate.swift :

import MobileCenter
import MobileCenterCrashes
import MobileCenterAnalytics

Le MobileCenterCore est requis pour toutes les fonctionnalités, tandis que les deux autres peuvent être omises si vous ne souhaitez pas les incidents ou Analytique. Ensuite, démarrez le Kit de développement Logiciel dans la méthode didFinishLaunchingWithOptions :

MSMobileCenter.start("{Your App Secret}", withServics:[MSAnalytics.self,
  MSCrashes.self])

Le Secret d’application est un GUID qui peut être effectuée à partir de la page de gestion de l’application dans le Mobile. Au lieu de taper ces quatre lignes, vous pouvez simplement les copier à partir de la page de vue d’ensemble de l’application, comme indiqué dans Figure 4.

Mise en route avec le Kit de Développement Mobile Center
Figure 4 mise en route avec le Kit de Développement Mobile Center

Le programme d’installation est très similaire sur Android :

import com.microsoft.azure.mobile.MobileCenter;
import com.microsoft.azure.mobile.crashes.Crashes;
import com.microsoft.azure.mobile.analytics.Analytics;
// ...
MobileCenter.start(getApplication(), "{Your App Secret}", Analytics.class,
  Crashes.class);

En activant le module se bloque, le Kit de développement Logiciel démarre automatiquement intercepter des exceptions non gérées sur iOS et Android, ainsi que de bas niveau des blocages sur iOS. Pour générer un incident de test, vous pouvez ajouter la ligne suivante à un gestionnaire de bouton sur iOS :

MSCrashes.generateTestCrash()

Le même appel est disponible pour Android :

Crashes.generateTestCrash();

Après une panne, le Kit de développement Logiciel stocke le fichier journal dans le stockage local de l’appareil. Lorsque l’utilisateur ouvre l’application, tout en attente de blocage des journaux sont validées dans le centre de Mobile back-end et traitée sur le serveur. Si vous générez votre application iOS avec la fonctionnalité Mobile Center génération, la trace de pile dans le journal de l’incident sera être automatiquement symbolicated, ce qui signifie que toutes les adresses mémoire sont converties en classe et les noms de méthode, les noms de fichier et les numéros de ligne. Si vous utiliser un serveur de builds différent ou générez votre application iOS sur votre Mac local, vous verrez que le nouvel incident enregistre tout d’abord dans le menu entrant. Vous pouvez ensuite télécharger les fichiers dSYM correspondants pour démarrer le processus symbolication.

En activant le module Analytique, le Kit de développement Logiciel fera automatiquement le suivi des sessions, propriétés telles que la version du système d’exploitation, le modèle ou le fabricant du périphérique et propriétés de l’utilisateur comme langue ou région et Mobile Center les afficher dans la page Audience (voir Figure 5).

Analytique mobile sur la Page d’assistance
Figure 5 Analytique Mobile sur la Page d’assistance

Dans iOS, vous pouvez suivre vos propres événements personnalisés et les propriétés de la ligne suivante :

MSAnalytics.trackEvent("Video clicked",
  withProperties: ["FileName" : "RickRoll.mp4"])

Sur Android, les propriétés sont spécifiées dans une table de hachage :

Map<String,String>properties=new HashMap<String,String>();
properties.put("FileName", "RickRoll.mp4");
Analytics.trackEvent("Video clicked", properties);

Toutes les données de télémétrie, incidents, propriétés et événements sont collectées de façon anonyme et stockées de manière sécurisée dans le Cloud Azure, ce qui vous donne un contrôle total sur les données de la collecte de votre application. Pour activer un niveau de confiance supérieur de même, le Kit de Développement Mobile Center est entièrement open source et est disponible sur github.com/Microsoft pour iOS (/ MobileCenter-Kit de développement Logiciel-iOS), Android (/ MobileCenter-Kit de développement Logiciel-Android) et Xamarin (/ MobileCenter-SDK-Xamarin). Je vous encourage à consulter ses bogues de fichier et le code source et de collaborer avec les requêtes d’extraction.

Back-End inclus

La plupart des applications mobiles utilisent un ou plusieurs services en ligne pour permettre leur puissance, par exemple, pour synchroniser une liste de tâches entre plusieurs appareils, pour partager des données entre plusieurs applications line-of-business ou pour limiter les fonctionnalités pour les utilisateurs authentifiés qui ont acheté un abonnement premium. Centre mobile prend en charge ces scénarios en intégrant directement avec Azure App Service via les Tables et les identités des fonctionnalités.

La première fois que vous cliquez sur l’élément de menu, vous devez vous connecter à votre abonnement Azure. Si vous n’avez pas encore, vous pouvez vous inscrire pour Azure gratuitement sur bit.ly/1MoL3Rb. Une fois votre compte Azure est lié au centre de Mobile, vous pouvez créer des tables de données à partir de la page de vue d’ensemble de Tables.

Par exemple, je crée une table avec le nom « TodoItem » pour une application de l’action. Pour accéder aux données de la table à partir d’une application iOS, je dois initialisez le Kit de développement Logiciel comme suit :

let client = MSClient(applicationURLString: "{Your App URL}")
let table = client.tableWithName("TodoItem")

Comme avec la clé secrète, l’URL de l’application doit être remplacé par l’URL de votre application à partir de la page de configuration dans le Mobile. Ensuite, je peux interroger l’objet MSTable pour tous les éléments disponibles :

table.readWithCompletion { (result, error) in
  if let err = error {
    print("ERROR ", err)
  } else if let items = result?.items {
    for item in items {
      print("Todo Item: ", item["text"])
    }
  }
}

Pour filtrer le résultat, je peux utiliser un objet NSPredicate et la méthode readWithPredicate, par exemple, pour obtenir les éléments des tâches incomplètes uniquement :

let predicate = NSPredicate(format: "complete == NO")
table.readWithPredicate(predicate) { (result, error) in
  // Handle item
}

Insérer un nouvel élément s’effectue via un objet NSDictionary et la méthode d’insertion :

let newItem = ["text": "Write MSDN article", "complete": false]
table.insert(newItem) { (result, error) in
  if let err = error {
    print("ERROR ", err)
  } else if let item = result {
    print("New item ID: ", item["id"])
  }
}

Le Service d’application Azure mobile back-end génère automatiquement de nouvelles colonnes basées sur le dictionnaire, y compris un id unique. Je peux également fournir ma propre id comme une paire clé-valeur dans le dictionnaire. Comme pour insérer, les méthodes update et delete M’autoriser à modifier des données, par exemple, lorsqu’un élément de tâche est terminé et les supprimer. Et, bien sûr, tout ceci fonctionne non seulement pour les applications iOS, mais toutes les plateformes prises en charge sur Mobile Center.

Avec le code présenté jusqu’ici, tous les utilisateurs de l’application accéderiez à la même liste d’éléments de tâche ou, plus généralement, les mêmes données sur tous les périphériques. Elle n’est pas souhaitable ; en règle générale, chaque utilisateur peut gérer sa propre liste de tâches. Je peux y parvenir en ajoutant la fonctionnalité d’identité à mon application. Centre mobile prend en charge cinq fournisseurs d’identité prêtes à l’emploi : Azure Active Directory, Facebook, Google, compte Microsoft et Twitter. Une application peut utiliser n’importe quel nombre de ces fournisseurs d’identité pour permettre aux utilisateurs de se connecter avec leur compte par défaut. Il existe deux options pour intégrer la fonctionnalité :

Avec un fournisseur de kit de développement Logiciel (par exemple, le SDK Facebook), les utilisateurs peuvent utiliser pour une expérience qui s’intègre étroitement avec le système d’exploitation sur lequel l’application est en cours d’exécution. Dans le cadre du processus de connexion, l’application obtient un jeton du fournisseur qui doit être envoyé au Service d’application Azure, puis valide le jeton et le remplace par un nouveau jeton de Service d’application. L’application peut également stocker le jeton du fournisseur pour son propre usage ; Pour accéder à l’API graphique Facebook, par exemple.

Sans un fournisseur de kit de développement Logiciel, vous pouvez utiliser la méthode suivante dans le Kit de Développement Mobile Center :

client.loginWithProvider("google", controller: self, animated: true) { (user, error) in
  // Load data
}

S’ouvre un affichage Web pour le fournisseur et l’utilisateur peut se connecter. Le jeton du fournisseur est traité directement sur le serveur et l’application reçoit jamais. À la fin du flux, le Kit de Développement Mobile Center dispose d’un jeton de Service d’application qui est automatiquement joint à toutes les demandes de back-end et garantit que les données de l’application sont accessibles uniquement par l’utilisateur authentifié.

À l'horizon

Toutes les fonctionnalités décrites dans cet article sont désormais disponibles en version préliminaire publique pour développeurs iOS et Android. Inscrivez-vous gratuitement sur aka.ms/mobilecenter. Dans les prochains mois, Microsoft fournira en permanence plus de fonctionnalités et de valeur, y compris la prise en charge pour les développeurs Windows, intégration avec VSTS et plus de services principaux tels que la synchronisation des données hors connexion. Notre objectif est que Mobile Center devient votre guichet unique pour le cycle de vie de vos applications mobiles et de bureau : générer, tester, distribuer, surveiller et vous connecter au cloud. Mon équipe et sont très intéressés par la nouvelle génération d’opérations de développement Mobile de Microsoft et nous espérons que vous allez rejoindre ce trajet.


Thomas Dohmkeest cofondateur de HockeyApp, qui a été acquise par Microsoft en liaison tardive 2014.  Dohmke est responsable de programme de groupe pour le centre Visual Studio Mobile et est responsable de la conduite de la vision du produit et la gestion de l’équipe des responsables de programme pour chaque fonctionnalité. Le contacter par courrier électronique à thdohmke@microsoft.com ou Twittter : @ashtom.


Discussion sur cet article dans le forum MSDN Magazine