
Bonjour Ă tous, nous avons dĂ©jĂ
écrit sur le nouveau livre de Mark Price, maintenant nous publions un extrait du livre "Développement d'applications mobiles utilisant Xamarin.Forms"
Nous allons créer une application de gestion de listes de clients mobiles dans la base de données Northwind, qui peut être exécutée sur iOS ou Android.
Installer le SDK Android
Pour créer des applications Android, vous devez avoir installé au moins un SDK Android. L'installation de Visual Studio pour Mac par défaut comprend déjà un SDK Android, mais il s'agit souvent d'une version plus ancienne pour prendre en charge le plus grand nombre d'appareils Android. Pour utiliser les dernières fonctionnalités de Xamarin.Forms, vous devez installer une version plus récente du SDK Android.
Lancez Visual Studio pour Mac et exécutez la commande Communauté Visual Studio -> Préférences (Communauté Visual Studio -> Préférences).
Dans la boîte de dialogue Préférences, accédez à la section Projets → Emplacements du SDK et sélectionnez les plates-formes souhaitées, par exemple, Android 8.0 - Oreo (Fig. 18.1).
Création d'une solution Xamarin.Forms
Exécutez la commande Fichier → Nouvelle solution.
Dans la boîte de dialogue qui s'ouvre, sélectionnez l'élément App dans la catégorie Multiplateforme (projets multiplateformes). Dans la section Xamarin.Forms, sélectionnez Blank Forms App (Fig. 18.2).
Cliquez sur le bouton Suivant.
Dans le champ App Name, entrez NorthwindMobile et dans le champ Organization Identifier, entrez com.packt. Réglez le commutateur de code partagé sur la position Utiliser la bibliothèque partagée et activez la case à cocher Utiliser XAML pour les fichiers de l'interface utilisateur (figure 18.3).
Cliquez sur le bouton Suivant.
Dans le champ Nom de la solution, spécifiez la valeur Part3Mobile et dans le champ Emplacement - la valeur / Utilisateurs / votre_nom / Code (Fig. 18.4). Cliquez sur le bouton Créer. Dans quelques instants, une solution et trois projets seront créés. Dans Visual Studio pour Mac, exécutez la commande Build → Build All (Assembly → Build All) et attendez que le programme télécharge tous les packages mis à jour et collecte les projets (Fig. 18.5).
Cliquez avec le bouton droit sur Part3Mobile et sélectionnez Mettre à jour les packages NuGet.
Création de modèle
Nous pourrions utiliser la bibliothèque de modèles de données créée précédemment avec les entités .NET Standard 2.0, mais nous devons implémenter la liaison de données bidirectionnelle, nous allons donc créer une nouvelle classe pour représenter les entités clientes dans une application mobile.
Cliquez avec le bouton droit sur le projet NorthwindMobile, dans le menu contextuel, cliquez sur Ajouter → Nouveau dossier et nommez le répertoire créé Modèles.
Cliquez avec le bouton droit sur le répertoire Modèles et dans le menu contextuel, cliquez sur Ajouter → Nouveau fichier.
Dans la boîte de dialogue Nouveau fichier, exécutez la commande Général → Classe vide (Général → Classe vide), nommez la classe Client (Fig. 18.6) et cliquez sur le bouton Nouveau.
Modifiez les instructions comme indiqué dans la liste ci-dessous:
using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; namespace NorthwindMobile.Models { public class Customer : INotifyPropertyChanged {

public static IList<Customer> Customers; static Customer() { Customers = new ObservableCollection<Customer>(); } public event PropertyChangedEventHandler PropertyChanged; private string customerID; private string companyName; private string contactName; private string city; private string country; private string phone; public string CustomerID { get { return customerID; } set { customerID = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CustomerID")); } } public string CompanyName { get { return companyName; } set { companyName = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CompanyName")); } } public string ContactName { get { return contactName; } set { contactName = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("ContactName")); } } public string City { get { return city; } set { city = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("City")); } } public string Country { get { return country; } set { country = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Country")); } } public string Phone { get { return phone; } set { phone = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Phone")); } } public string Location { get { return string.Format("{0}, {1}", City, Country); } }
Faites attention aux points suivants.
- La classe implémente INotifyPropertyChanged, donc les composants d'interface utilisateur bidirectionnels tels que Editor mettront à jour la propriété et vice versa. Tout repose sur l'événement PropertyChanged, qui se produit lorsque l'une des propriétés change.
- Après le téléchargement à partir du service, les données client seront mises en cache localement dans l'application mobile à l'aide d'ObservableCollection. Cela fournit un support de notification pour tous les composants d'interface utilisateur associés tels que ListView.
- En plus des propriétés de stockage des valeurs extraites du service REST, la classe définit une propriété Location en lecture seule. Il servira de lien dans la liste consolidée des clients.
- À des fins de test, lorsque le service REST n'est pas disponible, une méthode est utilisée pour utiliser les données de trois clients de démonstration.
Création d'une interface pour composer des numéros de téléphone
Cliquez avec le bouton droit sur le répertoire NorthwindMobile et sélectionnez Ajouter → Nouveau fichier dans le menu contextuel.
Dans la boîte de dialogue Nouveau fichier, choisissez Général → Interface vide, nommez l'IDialer d'interface et cliquez sur Nouveau.
Modifiez le code d'interface IDialer comme indiqué dans la liste suivante:
namespace NorthwindMobile { public interface IDialer { bool Dial(string number); } }
Implémentation d'une interface pour composer des numéros de téléphone pour iOS
Cliquez avec le bouton droit sur le répertoire NorthwindMobile.iOS et dans le menu contextuel, cliquez sur Ajouter → Nouveau fichier.
Dans la boîte de dialogue Nouveau fichier, sélectionnez Général → Classe vide (Général → Classe vide), nommez la classe PhoneDialer et cliquez sur le bouton Nouveau.
Modifiez son contenu comme indiqué dans la liste ci-dessous:
using Foundation; using NorthwindMobile.iOS; using UIKit; using Xamarin.Forms; [assembly: Dependency(typeof(PhoneDialer))] namespace NorthwindMobile.iOS { public class PhoneDialer : IDialer { public bool Dial(string number) { return UIApplication.SharedApplication.OpenUrl( new NSUrl("tel:" + number)); } } }
Implémentation d'une interface pour composer des numéros de téléphone pour Android
Cliquez avec le bouton droit sur le répertoire NorthwindMobile.Droid dans le menu contextuel et exécutez la commande Ajouter—> Nouveau fichier.
Dans la boîte de dialogue Nouveau fichier, exécutez la commande Général -> Classe vide (Général -> Classe vide), nommez la classe PhoneDialer et cliquez sur le bouton Nouveau.
Modifiez son contenu comme indiqué dans la liste suivante:
using Android.Content; using Android.Telephony; using NorthwindMobile.Droid; using System.Linq; using Xamarin.Forms; using Uri = Android.Net.Uri; [assembly: Dependency(typeof(PhoneDialer))] namespace NorthwindMobile.Droid { public class PhoneDialer : IDialer { public bool Dial(string number) { var context = Forms.Context; if (context == null) return false; var intent = new Intent(Intent.ActionCall); intent.SetData(Uri.Parse("tel:" + number)); if (IsIntentAvailable(context, intent)) { context.StartActivity(intent); return true; } return false; } public static bool IsIntentAvailable(Context context, Intent intent) { var packageManager = context.PackageManager; var list = packageManager.QueryIntentServices(intent, 0) .Union(packageManager.QueryIntentActivities(intent, 0)); if (list.Any()) return true; var manager = TelephonyManager.FromContext(context); return manager.PhoneType != PhoneType.None; } } }
Dans le répertoire NorthwindMobile.Droid, développez le sous-répertoire Propriétés et ouvrez le fichier AndroidManifest.xml. Dans la zone Autorisations requises, cochez la case CallPhone (Figure 18.7).
Ă€ propos de l'auteur
Mark J. Price est un développeur de solutions certifiées Microsoft (MCSD), spécialiste Microsoft: Programmation en C # et développeur certifié Episerver avec plus de 20 ans de formation et d'expérience en programmation.
Depuis 1993, Mark a réussi plus de 80 examens de programmation Microsoft et se spécialise dans la préparation d'autres tests réussis. Ses étudiants sont à la fois des jeunes de 16 ans et des professionnels avec de nombreuses années d'expérience. Mark propose une formation efficace, combinant des activités éducatives avec une pratique réelle en matière de conseil et de conception de systèmes pour les entreprises du monde entier.
Entre 2001 et 2003, Mark a consacré tout son temps au développement de logiciels de formation officiels au siège de Microsoft dans la ville américaine de Redmond. En tant que membre de l'équipe, il a écrit le premier cours de formation en C #, lorsque seule la version alpha du langage a été publiée. Au cours d'une collaboration avec Microsoft, il a travaillé comme instructeur de formation continue pour des sociétés certifiées dans des cours de formation spéciaux sur C # et .NET.
Mark développe et soutient actuellement des cours de formation pour Digital Experience Cloud d'Episerver, le meilleur CMS .NET en marketing numérique et e-commerce.
En 2010, Mark a reçu un certificat d'achèvement d'un programme d'études de troisième cycle, qui donne le droit d'enseigner. Il enseigne les mathématiques au lycée à Londres dans deux lycées à Londres pour préparer les certificats GCSE et A-Level. En outre, Mark a reçu la certification BSc en informatique. Hons. Diplômé de l'Université de Bristol, Angleterre.
À propos des réviseurs
Dustin Heffron est développeur de logiciels et de jeux. Il possède plus d'une décennie d'expérience en programmation dans divers langages, dont huit sont liés à C # et .NET.
Développe actuellement un logiciel d'automatisation et de test d'instruments médicaux chez Becton Dickinson. Il est également co-fondateur et PDG de SunFlake Studios.
Dustin collabore avec Packt depuis longtemps et a contribué à des livres tels que le développement de jeux XNA 4.0 par exemple: Guide du débutant, C # 6 et .NET Core 1.0: développement multiplateforme moderne, ainsi que la série de didacticiels vidéo de programmation XNA 3D. par l'exemple. De plus, Dustin et Larry Louisiana (Larry Louisiana) ont co-écrit une série de didacticiels vidéo XNA 3D Toolkit.
Efraim Kyriakidis est un ingénieur logiciel avec plus de dix ans d'expérience dans le développement et la mise en œuvre de solutions logicielles pour divers clients et projets. Il connaît bien toutes les étapes du cycle de développement logiciel. Sa première connaissance des ordinateurs et de la programmation s'est produite dans l'enfance, lors de la popularité de l'ordinateur Commodore 64, dans les années 80 du XXe siècle. Depuis lors, il a grandi et a reçu un diplôme à l'Université Aristote de Thessalonique, en Grèce. Tout au long de sa carrière, il a principalement travaillé avec les technologies Microsoft, en utilisant C # et .NET, à partir de la version 1.0. Il travaille actuellement chez Siemens AG en Allemagne en tant que développeur de logiciels.
»Plus d'informations sur le livre sont disponibles sur
le site Web de l'éditeur»
Contenu»
Extrait20% de réduction sur les colporteurs -
Packt