
Hallo allerseits, wir haben bereits über das neue Buch von Mark Price geschrieben. Jetzt veröffentlichen wir einen Auszug aus dem Buch „Entwicklung mobiler Anwendungen mit Xamarin.Forms“.
Wir werden eine mobile Client-Listenverwaltungsanwendung in der Northwind-Datenbank erstellen, die auf iOS oder Android ausgeführt werden kann.
Installieren Sie das Android SDK
Um Android-Anwendungen zu erstellen, müssen Sie mindestens ein Android SDK installiert haben. Die Installation von Visual Studio für Mac enthält standardmäßig bereits ein Android SDK, es handelt sich jedoch häufig um eine ältere Version, die die größte Anzahl von Android-Geräten unterstützt. Um die neuesten Funktionen von Xamarin.Forms nutzen zu können, müssen Sie eine neuere Version des Android SDK installieren.
Starten Sie Visual Studio für Mac und führen Sie den Befehl Visual Studio Community -> Einstellungen (Visual Studio Community -> Einstellungen) aus.
Gehen Sie im Dialogfeld Einstellungen zum Abschnitt Projekte → SDK-Speicherorte und wählen Sie die gewünschten Plattformen aus, z. B. Android 8.0 - Oreo (Abb. 18.1).
Erstellen einer Xamarin.Forms-Lösung
Führen Sie den Befehl Datei → Neue Lösung aus.
Wählen Sie im daraufhin angezeigten Dialogfeld das App-Element in der Kategorie Multiplattform (Plattformübergreifende Projekte) aus. Wählen Sie im Abschnitt Xamarin.Forms die Option Blank Forms App aus (Abb. 18.2).
Klicken Sie auf die Schaltfläche Weiter.
Geben Sie im Feld App-Name NorthwindMobile und im Feld Organisations-ID com.packt ein. Stellen Sie den Shared Code-Schalter auf die Position Use Shared Library und aktivieren Sie das Kontrollkästchen XAML für Benutzeroberflächendateien verwenden (Abbildung 18.3).
Klicken Sie auf die Schaltfläche Weiter.
Geben Sie im Feld Lösungsname den Part3Mobile-Wert und im Feld Standort den Wert / Users / your_name / Code an (Abb. 18.4). Klicken Sie auf die Schaltfläche Erstellen. In wenigen Augenblicken werden eine Lösung und drei Projekte erstellt. Führen Sie in Visual Studio für Mac den Befehl Erstellen → Alle erstellen (Assembly → Alle erstellen) aus und warten Sie, bis das Programm alle aktualisierten Pakete heruntergeladen und die Projekte erfasst hat (Abb. 18.5).
Klicken Sie mit der rechten Maustaste auf Part3Mobile und wählen Sie NuGet-Pakete aktualisieren.
Modellerstellung
Wir könnten die Bibliothek von Datenmodellen verwenden, die zuvor mit .NET Standard 2.0-Entitäten erstellt wurden, müssen jedoch eine bidirektionale Datenbindung implementieren, sodass wir eine neue Klasse erstellen, um Client-Entitäten in einer mobilen Anwendung darzustellen.
Klicken Sie mit der rechten Maustaste auf das NorthwindMobile-Projekt, klicken Sie im Kontextmenü auf Hinzufügen → Neuer Ordner und benennen Sie die erstellten Verzeichnismodelle.
Klicken Sie mit der rechten Maustaste auf das Verzeichnis Models und klicken Sie im Kontextmenü auf Hinzufügen → Neue Datei.
Führen Sie im Dialogfeld Neue Datei den Befehl Allgemein → Leere Klasse (Allgemein → Leere Klasse) aus, benennen Sie die Klasse Kunde (Abb. 18.6) und klicken Sie auf die Schaltfläche Neu.
Ändern Sie die Anweisungen wie in der folgenden Liste gezeigt:
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); } }
Beachten Sie die folgenden Punkte.
- Die Klasse implementiert INotifyPropertyChanged, sodass bidirektionale Benutzeroberflächenkomponenten wie Editor die Eigenschaft aktualisieren und umgekehrt. Alles beruht auf dem PropertyChanged-Ereignis, das auftritt, wenn sich eine der Eigenschaften ändert.
- Nach dem Herunterladen vom Dienst werden Kundendaten mithilfe der ObservableCollection lokal in der mobilen Anwendung zwischengespeichert. Dies bietet Benachrichtigungsunterstützung für alle zugehörigen Benutzeroberflächenkomponenten wie ListView.
- Zusätzlich zu den Eigenschaften zum Speichern von Werten, die vom REST-Service abgerufen wurden, definiert die Klasse eine schreibgeschützte Positionseigenschaft. Es dient als Bindung in der konsolidierten Kundenliste.
- Wenn der REST-Service zu Testzwecken nicht verfügbar ist, werden die Daten von drei Demo-Clients mithilfe einer Methode verwendet.
Erstellen einer Schnittstelle zum Wählen von Telefonnummern
Klicken Sie mit der rechten Maustaste auf das NorthwindMobile-Verzeichnis und wählen Sie im Kontextmenü Hinzufügen → Neue Datei.
Wählen Sie im Dialogfeld Neue Datei die Option Allgemein → Leere Schnittstelle, benennen Sie den Schnittstellen-IDialer und klicken Sie auf Neu.
Ändern Sie den IDialer-Schnittstellencode wie in der folgenden Liste gezeigt:
namespace NorthwindMobile { public interface IDialer { bool Dial(string number); } }
Implementierung einer Schnittstelle zum Wählen von Telefonnummern für iOS
Klicken Sie mit der rechten Maustaste auf das Verzeichnis NorthwindMobile.iOS und klicken Sie im Kontextmenü auf Hinzufügen → Neue Datei.
Wählen Sie im Dialogfeld Neue Datei die Option Allgemein → Leere Klasse (Allgemein → Leere Klasse), geben Sie der Klasse den Namen PhoneDialer und klicken Sie auf die Schaltfläche Neu.
Ändern Sie den Inhalt wie in der folgenden Liste gezeigt:
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)); } } }
Implementierung einer Schnittstelle zum Wählen von Telefonnummern für Android
Klicken Sie im Kontextmenü mit der rechten Maustaste auf das Verzeichnis NorthwindMobile.Droid und führen Sie den Befehl Hinzufügen -> Neue Datei aus.
Führen Sie im Dialogfeld Neue Datei den Befehl Allgemein -> Leere Klasse (Allgemein -> Leere Klasse) aus, benennen Sie die Klasse PhoneDialer und klicken Sie auf die Schaltfläche Neu.
Ändern Sie den Inhalt wie in der folgenden Liste gezeigt:
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; } } }
Erweitern Sie im Verzeichnis NorthwindMobile.Droid das Unterverzeichnis Properties und öffnen Sie die Datei AndroidManifest.xml. Aktivieren Sie im Bereich Erforderliche Berechtigungen das Kontrollkästchen CallPhone (Abbildung 18.7).
Über den Autor
Mark J. Price ist Microsoft Certified Solutions Developer (MCSD), Microsoft-Spezialist: Programmieren in C # und Episerver Certified Developer mit über 20 Jahren Schulungs- und Programmiererfahrung.
Seit 1993 hat Mark über 80 Microsoft-Programmierprüfungen bestanden und sich darauf spezialisiert, andere auf erfolgreiche Tests vorzubereiten. Seine Schüler sind sowohl 16-jährige als auch Fachleute mit langjähriger Erfahrung. Mark bietet effektive Schulungen an und kombiniert Bildungsaktivitäten mit realer Praxis in Beratung und Systemdesign für Unternehmen auf der ganzen Welt.
Zwischen 2001 und 2003 widmete Mark seine ganze Zeit der Entwicklung offizieller Schulungssoftware in der Microsoft-Zentrale in der US-Stadt Redmond. Als Teil des Teams schrieb er den ersten Schulungskurs in C #, als nur die Alpha-Version der Sprache veröffentlicht wurde. Während einer Zusammenarbeit mit Microsoft arbeitete er als Weiterbildungslehrer für zertifizierte Unternehmen in speziellen Schulungen zu C # und .NET.
Mark entwickelt und unterstützt derzeit Schulungskurse für die Digital Experience Cloud von Episerver, das beste .NET-CMS für digitales Marketing und E-Commerce.
Im Jahr 2010 erhielt Mark eine Bescheinigung über den Abschluss eines Aufbaustudiengangs, der das Recht zum Unterrichten einräumt. Er unterrichtet Mathematik an zwei High Schools in London, um sich auf GCSE- und A-Level-Zertifikate vorzubereiten. Darüber hinaus erhielt Mark die BSc-Zertifizierung für Informatik. Hons. Abschluss an der University of Bristol, England.
Über Rezensenten
Dustin Heffron ist Software- und Spieleentwickler. Er verfügt über mehr als ein Jahrzehnt Programmiererfahrung in verschiedenen Sprachen, von denen acht mit C # und .NET zusammenhängen.
Derzeit entwickelt Becton Dickinson Software zur Automatisierung und Prüfung medizinischer Instrumente. Er ist außerdem Mitbegründer und CEO von SunFlake Studios.
Dustin arbeitet seit langer Zeit mit Packt zusammen und hat zu Büchern wie XNA 4.0 Game Development by Example: Anfängerhandbuch, C # 6 und .NET Core 1.0: Moderne plattformübergreifende Entwicklung sowie zur Video-Tutorialserie XNA 3D Programming beigetragen. durch Beispiel. Darüber hinaus hat Dustin zusammen mit Larry Louisiana (Larry Louisiana) eine Reihe von Video-Tutorials XNA 3D Toolkit verfasst.
Efraim Kyriakidis ist ein Softwareentwickler mit über zehn Jahren Erfahrung in der Entwicklung und Implementierung von Softwarelösungen für verschiedene Kunden und Projekte. Er ist in allen Phasen des Softwareentwicklungszyklus bestens vertraut. Seine erste Bekanntschaft mit Computern und Programmierung fand in der Kindheit während der Popularität des Commodore 64-Computers in den 80er Jahren des 20. Jahrhunderts statt. Seitdem ist er aufgewachsen und hat ein Diplom an der Aristoteles-Universität von Thessaloniki, Griechenland, erhalten. Während seiner Karriere hat er hauptsächlich mit Microsoft-Technologien unter Verwendung von C # und .NET gearbeitet, beginnend mit Version 1.0. Derzeit arbeitet er als Softwareentwickler bei der Siemens AG in Deutschland.
»Weitere Informationen zum Buch finden Sie auf
der Website des Herausgebers»
Inhalt»
Auszug20% Rabatt Gutschein für Straßenhändler -
Packt