كتاب "C # 7 و .NET Core. تطوير عبر المنصات للمحترفين. الطبعة الثالثة

الصورة مرحباً بالجميع ، لقد كتبنا بالفعل عن الكتاب الجديد لـ Mark Price ، والآن نقوم بنشر مقتطف من كتاب "تطوير تطبيقات الهاتف المحمول باستخدام Xamarin.Forms"

سنقوم بإنشاء تطبيق إدارة قائمة عملاء الهاتف المحمول في قاعدة بيانات Northwind ، والتي يمكن تشغيلها على iOS أو Android.

قم بتثبيت Android SDK


لإنشاء تطبيقات Android ، يجب تثبيت Android SDK واحد على الأقل. يتضمن تثبيت Visual Studio لنظام التشغيل Mac افتراضيًا بالفعل حزمة Android SDK واحدة ، ولكنه غالبًا ما يكون إصدارًا أقدم لدعم أكبر عدد من أجهزة Android. لاستخدام أحدث ميزات Xamarin.Forms ، تحتاج إلى تثبيت إصدار أحدث من Android SDK.

قم بتشغيل Visual Studio لنظام التشغيل Mac وتشغيل الأمر Visual Studio Community -> Preferences (مجتمع Visual Studio -> التفضيلات).

في شاشة التفضيلات ، انتقل إلى قسم المشاريع → مواقع SDK وحدد الأنظمة الأساسية المطلوبة ، على سبيل المثال ، Android 8.0 - Oreo (الشكل 18.1).
الصورة

إنشاء حل Xamarin.Forms


قم بتشغيل الأمر File → New Solution.

في مربع الحوار الذي يفتح ، حدد عنصر التطبيق في فئة النظام الأساسي المتعدد (المشاريع عبر الأنظمة الأساسية). في قسم Xamarin.Forms ، حدد تطبيق نماذج فارغة (الشكل 18.2).

الصورة

انقر فوق الزر التالي.

في حقل اسم التطبيق ، أدخل NorthwindMobile ، وفي حقل معرف المؤسسة ، أدخل com.packt. اضبط مفتاح التشفير المشترك على وضع استخدام المكتبة المشتركة وقم بتنشيط خانة الاختيار استخدام XAML لملفات واجهة المستخدم (الشكل 18.3).

انقر فوق الزر التالي.

في حقل اسم الحل ، حدد قيمة Part3Mobile ، وفي حقل الموقع - القيمة / Users / your_name / Code (الشكل 18.4). انقر فوق الزر إنشاء. في غضون لحظات قليلة ، سيتم إنشاء حل وثلاثة مشاريع. في Visual Studio for Mac ، قم بتشغيل الأمر Build → Build All (Assembly → Build All) وانتظر حتى يقوم البرنامج بتنزيل جميع الحزم المحدثة ويجمع المشاريع (الشكل 18.5).

انقر بزر الماوس الأيمن على Part3Mobile وحدد تحديث حزم NuGet.

الصورة

الصورة

الصورة

إنشاء النموذج


يمكننا استخدام مكتبة نماذج البيانات التي تم إنشاؤها سابقًا مع كيانات .NET Standard 2.0 ، ولكننا بحاجة إلى تنفيذ ربط البيانات ثنائي الاتجاه ، لذلك سننشئ فئة جديدة لتمثيل كيانات العملاء في تطبيق الهاتف المحمول.

انقر بزر الماوس الأيمن على مشروع NorthwindMobile ، في قائمة السياق ، انقر فوق Add → New Folder وقم بتسمية نماذج الدليل التي تم إنشاؤها.

انقر بزر الماوس الأيمن على دليل الطرازات وفي القائمة المختصرة ، انقر فوق إضافة ← ملف جديد.

في مربع الحوار New File ، نفّذ الأمر General → Empty Class (General → Empty class) ، واسم الفئة Customer (الشكل 18.6) وانقر فوق الزر New.

قم بتعديل التعليمات كما هو موضح في القائمة أدناه:

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); } } //     - public static void SampleData() {   Customers.Clear(); Customers.Add(new Customer { CustomerID = "ALFKI", CompanyName = "Alfreds Futterkiste",  ContactName = "Maria Anders", City = "Berlin", Country = "Germany", Phone = "030-0074321" }); Customers.Add(new Customer { CustomerID = "FRANK",  CompanyName = "Frankenversand",    ContactName = "Peter Franken",   City = "München", Country = "Germany", Phone = "089-0877310"  }); Customers.Add(new Customer  {  CustomerID = "SEVES", CompanyName = "Seven Seas Imports", ContactName = "Hari Kumar", City = "London", Country = "UK", Phone = "(171) 555-1717" });    }  } } 

انتبه إلى النقاط التالية.

  • تطبق الفئة INotifyPropertyChanged ، لذا ستقوم مكونات واجهة المستخدم ثنائية الاتجاه مثل Editor بتحديث الخاصية والعكس صحيح. كل شيء يقع على حدث PropertyChanged ، والذي يحدث عندما تتغير إحدى الخصائص.
  • بعد التنزيل من الخدمة ، سيتم تخزين بيانات العملاء مؤقتًا محليًا في تطبيق الهاتف المحمول باستخدام ObservableCollection. يوفر هذا دعمًا للإشعارات لأي من مكونات واجهة المستخدم ذات الصلة مثل ListView.
  • بالإضافة إلى خصائص تخزين القيم المستردة من خدمة REST ، تحدد الفئة خاصية الموقع للقراءة فقط. سيكون بمثابة ملزم في القائمة الموحدة للعملاء.
  • لأغراض الاختبار ، عندما تكون خدمة REST غير متاحة ، يتم استخدام طريقة لاستخدام بيانات ثلاثة عملاء تجريبيين.

إنشاء واجهة لطلب أرقام الهاتف


انقر بزر الماوس الأيمن على دليل NorthwindMobile وحدد Add → New File من قائمة السياق.

في مربع الحوار New File ، اختر General → Empty Interface ، وقم بتسمية الواجهة IDialer ، وانقر فوق New.
قم بتغيير رمز واجهة IDialer كما هو موضح في القائمة التالية:

 namespace NorthwindMobile { public interface IDialer { bool Dial(string number); } } 

تنفيذ واجهة لطلب أرقام الهاتف لنظام iOS


انقر بزر الماوس الأيمن على دليل NorthwindMobile.iOS ومن قائمة السياق ، انقر فوق إضافة → ملف جديد.

في مربع الحوار New File ، حدد General → Empty Class (General → Empty Class) ، وأعط الفئة اسم PhoneDialer وانقر فوق الزر New.

قم بتغيير محتوياته كما هو موضح في القائمة أدناه:

 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));  }  } } 

تنفيذ واجهة لطلب أرقام الهاتف لنظام Android


انقر بزر الماوس الأيمن على دليل NorthwindMobile.Droid في قائمة السياق وقم بتنفيذ الأمر Add—> New File.

في مربع الحوار New File ، قم بتشغيل الأمر General—> Empty Class (General—> Empty class) ، وقم بتسمية الفئة PhoneDialer ، وانقر فوق الزر New.

تعديل محتوياته كما هو موضح في القائمة التالية:

 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; } } } 

في دليل NorthwindMobile.Droid ، قم بتوسيع الدليل الفرعي Properties وفتح ملف AndroidManifest.xml. في منطقة الأذونات المطلوبة ، حدد خانة الاختيار CallPhone (الشكل 18.7).

الصورة

عن المؤلف


مارك جيه برايس هو مطور حلول معتمد من Microsoft (MCSD) ، ومتخصص في Microsoft: البرمجة في C # ومطور معتمد من Episerver مع أكثر من 20 عامًا من الخبرة في التدريب والبرمجة.

منذ عام 1993 ، اجتاز Mark أكثر من 80 اختبارًا من برامج Microsoft ومتخصصًا في إعداد الآخرين للاختبار الناجح. طلابه هم في سن 16 عامًا ومحترفون ولديهم سنوات عديدة من الخبرة. يوفر مارك تدريباً فعالاً ، يجمع بين الأنشطة التعليمية والممارسة الحقيقية في الاستشارات وتصميم النظم للشركات حول العالم.

بين عامي 2001 و 2003 ، كرس مارك كل وقته لتطوير برامج التدريب الرسمية في مقر شركة Microsoft في مدينة ريدموند الأمريكية. كجزء من الفريق ، كتب أول دورة تدريبية في C # ، عندما تم إصدار نسخة ألفا فقط من اللغة. خلال التعاون مع Microsoft ، عمل كمدرس للتعليم المستمر للشركات المعتمدة في دورات تدريبية خاصة على C # و .NET.

يقوم مارك حاليًا بتطوير ودعم الدورات التدريبية لـ Episerver Digital Experience Cloud ، وهي أفضل .NET CMS في التسويق الرقمي والتجارة الإلكترونية.

في عام 2010 ، حصل مارك على شهادة إتمام برنامج للدراسات العليا ، والذي يمنح الحق في التدريس. يقوم بتدريس الرياضيات في المدرسة الثانوية في لندن في مدرستين ثانويتين في لندن للتحضير لشهادات GCSE و A-Level. بالإضافة إلى ذلك ، حصل مارك على شهادة بكالوريوس علوم الكمبيوتر. مع مرتبة الشرف. شهادة في جامعة بريستول ، إنجلترا.

حول المراجعين


داستن هيفرون هو مطور برامج وألعاب. لديه أكثر من عقد من الخبرة في البرمجة بلغات مختلفة ، ثمانية منها مرتبطة بـ C # و .NET.

تعمل حاليًا على تطوير برنامج لأتمتة واختبار الأدوات الطبية في Becton Dickinson. كما أنه المؤسس المشارك والرئيس التنفيذي لشركة SunFlake Studios.

تعاونت Dustin مع Packt لفترة طويلة وساهمت في كتب مثل XNA 4.0 Game Development بالقدوة: Beginner's Guide و C # 6 و .NET Core 1.0: Modern Cross-Platform Development ، بالإضافة إلى سلسلة XNA 3D Programming video tutorials video. بالقدوة. بالإضافة إلى ذلك ، شارك داستن مع Larry Louisiana (Larry Louisiana) في تأليف سلسلة من دروس الفيديو XNA 3D Toolkit.

إفرايم كيرياكيديس هو مهندس برمجيات يتمتع بخبرة تزيد عن عشر سنوات في تطوير وتنفيذ الحلول البرمجية لمختلف العملاء والمشاريع. وهو ضليع في جميع مراحل دورة تطوير البرمجيات. حدث أول تعارف له مع أجهزة الكمبيوتر والبرمجة في الطفولة ، خلال شعبية الكمبيوتر كومودور 64 ، في 80s من القرن العشرين. منذ ذلك الحين ، نشأ وحصل على دبلوم في جامعة أرسطو في سالونيك ، اليونان. طوال حياته المهنية ، عمل بشكل أساسي مع تقنيات Microsoft ، باستخدام C # و .NET ، بدءًا من الإصدار 1.0. يعمل حاليًا في شركة Siemens AG في ألمانيا كمطور برامج.

»يمكن العثور على مزيد من المعلومات حول الكتاب على موقع الناشر على الويب
» المحتويات
» مقتطفات

قسيمة خصم 20٪ للباعة المتجولين - Packt

Source: https://habr.com/ru/post/ar415275/


All Articles