كيفية بناء باك إند لتطبيق iOS؟ دليل خطوة بخطوة

Back4App Guide _ How to Build a Backend for Your iOS App_-2
Back4App Guide _ How to Build a Backend for Your iOS App_-2

تتطلب تطبيقات iOS، مثل تطبيقات الويب، طريقة ما لتخزين البيانات وتتبعها. وسواء تم تخزين تلك البيانات على خدمة خلفية سحابية أو على خادم مدمج محلياً يتم تشغيله بشكل شخصي، فإن الواجهة الخلفية ضرورية لإدارة بيانات المستخدم.

ومع ذلك، قد يكون إنشاء خلفية لتطبيق iOS الخاص بك من الصفر مهمة شاقة، خاصةً إذا كنت جديدًا بشكل عام على تطوير نظام iOS وتطوير الواجهة الخلفية.

ستتعلم في هذا البرنامج التعليمي كيفية إنشاء خلفية لتطبيق iOS الخاص بك. أولاً، سنقدم نظرة عامة على تطوير نظام iOS ونناقش فوائده وقيوده.

بعد ذلك، ستستكشف خيارات الواجهة الخلفية المختلفة المتاحة لك. أخيرًا، ستتعلم كيفية استخدام Back4App، وهي واجهة خلفية كخدمة (BaaS)، كواجهة خلفية لتطبيق iOS الخاص بك.

نظرة عامة على نظام iOS

طورت Apple نظام التشغيل iOS كنظام تشغيل أساسي لتشغيل تطبيقات الأجهزة المحمولة المبنية على أجهزة iPhone وiPad وiPod Touch الخاصة بها.

يُطلق على بناء هذه التطبيقات وتحسينها لتعمل على منصة iOS كما صممتها Apple اسم تطوير iOS. تتم كتابة تطبيقات iOS باستخدام لغتي برمجة، وهما Objective-C، ومؤخراً Swift.

كانت Objective-C هي اللغة الأساسية المستخدمة في تطوير تطبيقات iOS قبل طرح Swift في عام 2014. صُممت سويفت لتكون لغة أكثر حداثة وسهولة في الاستخدام، مع ميزات مثل الاستدلال على النوع والخيارات التي تجعلها أسهل في القراءة والكتابة.

يمكن استخدام كلتا اللغتين في نفس المشروع. هذا لأن Swift، وفقًا لوثائق Swift، صُممت لتكون متوافقة مع Objective-C ويمكن استخدامها للتفاعل مع شيفرة Objective-C القديمة الموجودة.

لإنشاء تطبيقات iOS الخاصة بك، توفر لك Apple تطبيق Xcode، وهو بيئة تطوير متكاملة (IDE) حيث يمكنك كتابة التعليمات البرمجية وإنشاء تطبيقات iOS وتطويرها بسهولة.

فوائد تطوير تطبيقات iOS

كمطوّر، يمكن أن يكون إنشاء تطبيقات iOS مفيدًا بالطرق التالية:

تجربة مستخدم عالية الجودة

تشتهر تطبيقات iOS بتجربة مستخدم استثنائية، مع تصميمات بديهية ومصقولة يجدها المستخدمون جذابة وسهلة الاستخدام.

لديهم مبادئ توجيهية محددة لتصميم التطبيقات تم إنشاؤها للحصول على أفضل تجربة للمستخدم، مع التركيز على البساطة والوضوح والاتساق. وينتج عن ذلك تطبيقات جذابة بصرياً مع عناصر تحكم وتخطيطات تسهّل على المستخدمين العثور على ما يحتاجون إليه وإكمال مهامهم بسرعة.

وبالإضافة إلى ذلك، توفر Apple للمطورين مجموعة شاملة من أدوات التصميم والموارد للمساعدة في ضمان تلبية تطبيقاتهم لأعلى معايير الجودة.

تم تحسين تطبيقات iOS أيضًا لتناسب الأجهزة والبرامج الخاصة بأجهزة Apple، مما يؤدي إلى أداء سريع ورسوم متحركة سلسة ورسومات عالية الجودة.

أمان أفضل

من المزايا المهمة الأخرى لتطبيقات iOS مستوى الأمان الذي توفره. ويرجع ذلك إلى عدة عوامل، تبدأ بشكل أساسي من عملية المراجعة الصارمة لمتجر تطبيقات Apple، والتشفير القوي، والميزات التي تركز على الخصوصية.

صُممت عملية مراجعة متجر التطبيقات للتأكد من أن جميع تطبيقات متجر التطبيقات تفي بإرشادات صارمة للمحتوى والأمان. ويشمل ذلك التحقق من وجود تعليمات برمجية خبيثة وبرامج ضارة وغيرها من التهديدات الأمنية المحتملة.

ونتيجة لذلك، تقل احتمالية احتواء تطبيقات iOS على تعليمات برمجية ضارة أو استخدامها في هجمات التصيد الاحتيالي أو غيرها من الأنشطة الضارة.

الاتساق عبر الأجهزة

صُممت تطبيقات iOS لتبدو وتعمل بالطريقة نفسها عبر جميع أجهزة Apple، بما في ذلك أجهزة iPhone وiPad وiPod Touch.

هذا الاتساق يجعل من السهل على المستخدمين الانتقال بين الأجهزة المختلفة دون الحاجة إلى تعلم واجهة مستخدم أو نظام تنقل جديد. كما أنه يضمن لمطوّري التطبيقات تصميم وإنشاء تطبيقات تعمل بسلاسة على جميع الأجهزة دون الحاجة إلى القلق بشأن مشكلات التوافق أو الميزات الخاصة بالأجهزة.

أدوات المطورين

تزود Apple مطوري iOS بأدوات قوية تجعل تطوير تطبيقات iOS واختبارها وتصحيح الأخطاء فيها أسهل.

وتتضمن هذه الأدوات مجموعة أدوات iOS SDK و Xcode ومجموعة من الأدوات والموارد الأخرى التي تساعد على تحسين تجربة المطورين وجودة التطبيقات التي يتم إنشاؤها.

حدود تطوير تطبيقات iOS

تجربة تطوير iOS ليست خالية من العيوب. هناك قيود ستواجهها عند تطوير تطبيق iOS. بعضها يتضمن.

توافق محدود للأجهزة

يتمثل أحد الإحباطات الرئيسية التي تواجهها في تطوير تطبيقات iOS في قصر نطاق توافقها مع الأجهزة. يوجد في عالم اليوم مجموعة واسعة من الشركات المصنعة للأجهزة المحمولة ومجموعة واسعة بنفس القدر من المستخدمين المخصصين.

ومع ذلك، لا تعمل تطبيقات iOS إلا على أجهزة Apple الخاصة. هذا يعني أنه لا يمكن استخدام التطبيقات إلا على أجهزة iPhone و iPad و iPod Touch. وهذا يحد من الجمهور المحتمل للتطبيق الذي تنشئه ويقيده بنظام Apple البيئي.

في حين أن Apple لديها قاعدة مستخدمين كبيرة، إلا أن التوافق المحدود لتطبيقات iOS يمكن أن يكون عيباً إذا كنت تتطلع إلى الوصول إلى جمهور أوسع خارج Apple.

عملية الموافقة على متجر التطبيقات

من المعروف عن عملية مراجعة متجر تطبيقات أبل أنها صارمة ويمكن أن تستغرق وقتاً أطول من متاجر التطبيقات الأخرى، مثل جوجل بلاي.

صُممت عملية المراجعة للتأكد من أن جميع التطبيقات على متجر التطبيقات تفي بإرشادات Apple للجودة والسلامة والمحتوى. ومع ذلك، يمكن أن يمثل ذلك تحديًا بسبب وقت الانتظار الطويل، مما يؤخر إصدار تطبيقك للجمهور.

النظام البيئي المغلق

تتحكم Apple بإحكام في أجهزة وبرامج أجهزتها، مما يعني أنه لا يمكن استخدام سوى البرامج والأجهزة المعتمدة من Apple مع أجهزة iOS. كما أن نظامها البيئي المغلق يحد من إمكانية التخصيص ويمكن أن يخلق عوائق إذا كنت ترغب في تقديم المزيد من المرونة لمستخدمي تطبيقك.

سيجعل هذا النظام المغلق من الصعب على المطورين التكامل مع خدمات الجهات الخارجية وواجهات برمجة التطبيقات.

خيارات الواجهة الخلفية لتطبيقات iOS

والآن بعد أن تعرفت على مزايا وقيود تطوير تطبيقات iOS، يجب أن تفهم خيارات الواجهة الخلفية المختلفة المتاحة لتطبيق iOS الخاص بك.

IaaS

البنية التحتية كخدمة (IaaS) هو نموذج حوسبة سحابية حيث يقدم مزود خارجي موارد حوسبة افتراضية عبر الإنترنت للمستخدمين الذين قد يحتاجون إليها لتشغيل برامج شخصية.

إن استخدام IaaS يشبه استئجار جهاز كمبيوتر افتراضي من موفر خدمة خارجي. فبدلاً من شراء جهاز كمبيوتر وتخزينه، يمكنك الوصول إلى جهاز كمبيوتر يستضيفه الموفر عبر الإنترنت.

هذا الكمبيوتر هو ببساطة تمثيل افتراضي لجهاز كمبيوتر حقيقي، مع توفير كل البنية التحتية الأساسية لبناء بيئة الحوسبة الافتراضية الخاصة بك مع ميزات مثل مساحة التخزين وقوة المعالجة والذاكرة.

يمنحك الموفر إمكانية الوصول إلى هذا الكمبيوتر الافتراضي، حيث يمكنك تشغيل البرامج والتطبيقات الخاصة بك دون الحاجة إلى القلق بشأن الأجهزة المادية أو الصيانة.

باستخدام IaaS، يمكنك زيادة أو تقليل حجمها حسب الحاجة وتدفع فقط مقابل ما تستخدمه. ومن الأمثلة على خدمات IaaS: خدمات أمازون ويب سيرفيسز (AWS) ومايكروسوفت أزور (Microsoft Azure) ومنصة جوجل السحابية

PaaS

المنصة كخدمة (PaaS) هي نموذج حوسبة سحابية آخر مشابه للمنصة كخدمة. يقدم موفرو PaaS منصة مهيأة مسبقًا مع الحد الأدنى من التخصيص، مما يجعل إنشاء التطبيقات ونشرها أسهل وأسرع بالنسبة لك.

يتمثل الفرق الأساسي بين IaaS وPaaS في مستوى التحكم في البنية التحتية الأساسية.

مع IaaS، يقدم الموفر موارد حوسبة افتراضية، مثل الخوادم والتخزين، عبر الإنترنت. وفي الوقت نفسه، يمكنك التحكم الكامل في البيئة الافتراضية، بما في ذلك نظام التشغيل والبرامج الوسيطة والتطبيقات.

من ناحية أخرى، مع PaaS، يقدم مزود الخدمة كخدمة منصة مهيأة مسبقاً لأنظمة التشغيل والبرمجيات الوسيطة والمكونات البرمجية الأخرى اللازمة لتطوير التطبيقات ونشرها. ما عليك سوى التركيز على تطوير التطبيق بينما يهتم موفر خدمة PaaS بالبنية التحتية الأساسية.

ومن أمثلة خدمات المنصة كخدمة Heroku و Google App Engine وخدمة تطبيقات Microsoft Azure App Service.

باء باءس

باستخدام الواجهة الخلفية كخدمة (BaaS)، يمكنك بسهولة دمج الواجهة الخلفية السحابية في تطبيقك دون إنشاء البنية التحتية الأساسية أو إدارتها.

يقدم موفرو خدمات BaaS خدمات خلفية مبنية مسبقًا لا يتم توفيرها عادةً مع PaaS أو IaaS، مثل قواعد البيانات ومصادقة المستخدم وتخزين الملفات والوظائف بدون خادم والإشعارات الفورية. يمكنك الآن دمج هذه الخدمات في تطبيقاتك من خلال واجهة برمجة التطبيقات أو مجموعة تطوير البرمجيات SDK.

وهذا يلغي الحاجة إلى بناء وصيانة البنية التحتية الخلفية الخاصة بك، مما يتيح لك التركيز على بناء الواجهة الأمامية للتطبيق. ومن الأمثلة على خدمات BaaS: Back4App وFirebase و8Base.

ما هي تكلفة تطوير واجهة خلفية لتطبيق iOS؟

قد تختلف تكلفة تطوير واجهة خلفية لتطبيق iOS حسب عوامل مختلفة، بما في ذلك الوقت والموارد والموارد البشرية المطلوبة.

يعد الوقت المستغرق في بناء الواجهة الخلفية وإعدادها عاملاً مهمًا يجب مراعاته. يعتمد الوقت اللازم لبناء الواجهة الخلفية على مدى تعقيد وظائف التطبيق وتكامل الواجهة الخلفية مع التطبيق.

قد يتطلب أيضًا وقتًا إضافيًا للاختبار والتصحيح والنشر. وكلما كانت وظائف التطبيق أكثر تعقيدًا، كلما استغرق تطوير الواجهة الخلفية وقتًا أطول، مما قد يؤدي في النهاية إلى زيادة التكلفة.

تعتبر الموارد البشرية المطلوبة لتطوير الواجهة الخلفية عاملاً حاسماً آخر يؤثر على التكلفة. فتوظيف المطورين ذوي الخبرة والاحتفاظ بهم قد يكون مكلفاً، كما أن تكلفة التدريب والتطوير يمكن أن تضيف إلى التكلفة الإجمالية لتطوير الواجهة الخلفية.

يمكن إدارة تكلفة تطوير الواجهة الخلفية لتطبيق iOS من خلال الاستفادة من حلول الواجهة الخلفية الحالية مثل Back4app.

كيفية إنشاء واجهة خلفية لتطبيق iOS باستخدام Back4app؟

Back4App هو نظام أساسي للواجهة الخلفية كخدمة (BaaS) مع بنية تحتية خلفية جاهزة لتطوير تطبيقات الجوال والويب. وهي توفر بنية تحتية خلفية قوية وقابلة للتطوير، بما في ذلك إدارة قاعدة البيانات، ومصادقة المستخدم، والإشعارات الفورية وغيرها.

يعد Back4App خيارًا رائعًا كواجهة خلفية لتطبيق iOS الخاص بك لعدة أسباب. أولاً، يوفر واجهة بسيطة وسهلة الاستخدام تجعل من السهل إدارة البيانات وواجهات برمجة التطبيقات.

ثانياً، يقدم وثائق شاملة ترشدك خلال كل خطوة من خطوات عملية التطوير. أيضًا، يوفر Back4App استضافة سحابية قابلة للتطوير يمكنها التعامل مع احتياجات أي تطبيق، كبيرًا كان أو صغيرًا، ويوفر ميزات أمان متطورة.

باتباع الخطوات الموضحة أدناه، يمكنك إنشاء واجهة خلفية لتطبيق iOS باستخدام Back4App.

الخطوة 1: قم بالتسجيل للحصول على حساب Back4app مجانًا

لإنشاء بنية تحتية خلفية لتطبيق iOS الخاص بك، قم بالتسجيل للحصول على حساب Back4App مجاناً على الموقع الرسمي. من خلال حساب Back4App الخاص بك، سيكون لديك القدرة على إنشاء وتهيئة الواجهة الخلفية لتطبيق iOS الخاص بك وإدارة جميع العمليات المتعلقة بالبيانات من هذا التطبيق الخلفي.

للتسجيل للحصول على حساب مجاني، توجه إلى موقع Back4App الإلكتروني وقم بالتسجيل باستخدام حساب Google أو حساب GitHub أو عنوان البريد الإلكتروني.

الخطوة 2: إنشاء تطبيق جديد

الآن بعد أن أصبح لديك حساب Back4App، يمكنك تسجيل الدخول والمتابعة لإنشاء تطبيق جديد. سيكون هناك زر للقيام بذلك في الزاوية العلوية اليمنى من صفحة حسابك. يجب عليك تحديد خيار Backend كخدمة لتطبيقك.

تابع إعطاء تطبيقك الجديد اسمًا مناسبًا واضغط على زر إنشاء.

سيقوم تطبيق Back4App الآن ببناء تطبيقك والانتقال بك إلى لوحة التحكم الخاصة به.

الخطوة 3: قم بتوصيل تطبيق iOS الخاص بك بتطبيق Back4app

الخطوة التالية هي توصيل تطبيق iOS الخاص بك بالواجهة الخلفية ل Back4App. يجب عليك تثبيت Parse SDK في تطبيق iOS الخاص بك للقيام بذلك. سيستخدم تطبيقك مجموعة أدوات تطوير البرمجيات هذه للحصول على رابط مباشر بالواجهة الخلفية.

قبل إعداد الاتصال، ستحتاج إلى أن يكون لديك تطبيق iOS قيد التشغيل للعمل معه. كما ذكرنا سابقًا، يتم إنشاء تطبيقات iOS باستخدام Xcode، وهو IDE الخاص بشركة Apple لتطوير برامج Apple.

ستحتاج إلى نسخة حديثة من Xcode (الإصدار 13.0.0 أو أحدث) مثبتة على حاسوب Mac الخاص بك لتتمكن من متابعة هذا الدليل. بعض الأدوات والميزات التي ستستخدمها في هذا الدليل متوفرة فقط في هذه الإصدارات من Xcode.

ابدأ بتشغيل Xcode وإنشاء مشروع تطبيق Xcode iOS جديد:

تهيئة تطبيق xcode الجديد

سيُطلب منك ملء اسم لتطبيقك مع بعض معلومات التكوين. احرص على تحديد SwiftUI كواجهة مفضلة.

تكوين تطبيق Xcode الجديد

تستخدم واجهة SwiftUI نظام عرض مختلف عن واجهة StoryBoard التي تم إلغاؤها تدريجيًا. نتيجةً لذلك، ستفتقد بنية مشروعك الحالي إلى ملف AppDelegate.swift. تحتاج إلى إنشاء هذا الملف، حيث ستحتاج إليه لاحقًا في الدليل.

أنشئ AppDelegate.swift واستورد الشيفرة التالية إلى الملف:

import SwiftUI

class AppDelegate: NSObject, UIApplicationDelegate {
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        return true 
    }
    
}

الآن داخل التطبيق في ملف المشروع الجذري الخاص بك، انسخ والصق الشيفرة التالية في الأعلى:

@UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate

أنت الآن جاهز لتثبيت Parse SDK. ستقوم بتثبيت هذا باستخدام CocoaPods، وهو مدير تبعية مفتوح المصدر لمشاريع Xcode. امض قدمًا وقم بتثبيت CocoaPods إذا لم تكن قد قمت بذلك بعد.

أولاً، قم أولاً بتهيئة ملف Podfile لمشروعك عن طريق تشغيل الأمر pods init في محطة طرفية داخل دليل مشروعك.

افتح ملف Podfile الذي تم إنشاؤه باستخدام Xcode وحدد Parse SDK.

يجب أن يبدو ملف البودفيل الخاص بك بهذا الشكل:

# Uncomment the next line to define a global platform for your project
#platform :ios, '13.0'

target 'ParseiOS-app' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for ParseiOS-app
  pod 'Parse'
  
end

يمكنك بعد ذلك تثبيت Parse SDK على مشروعك باستخدام تبعية Parse المحددة في ملف Podfile.

قم بتشغيل الأمر التالي في الطرفية:

pod install

عند تثبيت الكبسولات، ستتم إعادة بناء مشروعك كملف مساحة عمل جديدة بامتداد .xcworkspace. من هنا، ستعمل مع مساحة العمل التي أعيد بناؤها.

لقد قمت بتثبيت Parse SDK بنجاح في مشروعك.

قد تواجه خطأ في توافق محاكي إصدار iOS بعد تشغيل تثبيت البود. في حالة حدوث ذلك، قم بتعديل ملف Podfile الخاص بك لتضمين هذا في النهاية:

post_install do |installer|
  installer.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
      end
    end
  end
end

مقتطف التعليمات البرمجية هو خطاف ما بعد التثبيت لملف Podfile الخاص بك، والذي يسمح لك بتعديل إعدادات الإنشاء لمشروع Xcode الخاص بك بعد انتهاء CocoaPods من تثبيت البودات.

تقوم أداة ما بعد التثبيت هذه بتعيين الحد الأدنى لإصدار هدف النشر لنظام التشغيل iPhone إلى 12.0. يمكنك تغييره في أي وقت عن طريق تعيين إصدار جديد إلى ['IPHONEOS_DEPLOYMENT_TARGET'].

الآن قم بتثبيت الكبسولات مرة أخرى:

pod install

لإنهاء توصيل تطبيق iOS الخاص بك، ستحتاج إلى ربط معرف التطبيق الخاص بتطبيق Back4App ومفتاح العميل. للقيام بذلك، توجه إلى إعدادات التطبيق الموجودة في لوحة التحكم وانتقل إلى إعدادات الخادم > الإعدادات الأساسية.

داخل الإعدادات الأساسية، يجب أن تجد معرّف التطبيق ومفتاح العميل الذي تم إنشاؤه شخصيًا للواجهة الخلفية ل Back4App. انسخ هذه المفاتيح واحفظها.

💡 ملاحظة: المفاتيح الموضحة في الصورة أعلاه هي لتطبيق اختباري تم إنشاؤه لهذا الدليل. تأكد من نسخ المفاتيح المخصصة الخاصة بك، لأن المفاتيح المذكورة أعلاه لن تعمل مع تطبيقك.

بعد ذلك، افتح AppDelegate.swift وعدّل الشيفرة الموجودة داخل الدالة didFinishLaunchingWithOptions.

يجب أن تبدو دالتك هكذا:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        print("app launched!")

        let configuration = ParseClientConfiguration {
    $0.applicationId = "PASTE_YOUR_APPLICATION_ID_HERE"
    $0.clientKey = "PASTE_YOUR_CLIENT_ID_HERE"
    $0.server = "<https://parseapi.back4app.com>"
}
Parse.initialize(with: configuration))

        return true
    }

الصق معرف التطبيق المحفوظ ومفتاح العميل في العناصر النائبة المشار إليها.

يجب عليك بعد ذلك استيراد Parse SDK إلى هذا الملف لمسح أي أخطاء "لم يتم العثور على الوحدة النمطية":

import Parse

تطبيقك الآن متصل بنجاح بتطبيق Back4App!

الخطوة 4: اختبر الواجهة الخلفية

في هذا القسم، ستختبر تطبيق iOS الخاص بك للتأكد من إمكانية التفاعل مع خادم Back4App والتطبيق الذي أنشأته.

ستختبر عمليات CRUD وتخزين البيانات باستخدام Parse SDK.

في نهاية الاختبار، ستتمكن من التأكد من أن البيانات التي تم إنشاؤها يتم حفظها وقراءتها بنجاح من تطبيق الواجهة الخلفية.

لتخزين البيانات على الواجهة الخلفية ستقوم بإنشاء كائن صنف داخل Back4app. بشكل افتراضي، سيكون للفئة الجديدة مخططًا يحتوي على ثلاثة حقول: “معرف الكائن” و “تم إنشاؤه في” و “تم تحديثه في”. يمكنك إضافة حقول وصفوف بيانات جديدة.

سوف تقوم بإنشاء حقل جديد من تطبيق iOS الخاص بك وقراءة البيانات المخزنة في الفصل الذي قمت بإنشائه.

أولًا، داخل ContentView.swift، استورد ContentView.swift استورد Parse SDK أسفل SwiftUI مباشرةً:

import SwiftUI
import Parse

لاختبار قدرة تطبيقك على التفاعل مع الواجهة الخلفية، ستنشئ واجهة مستخدم للمستخدم لإدخال نص النتيجة وحفظها في الواجهة الخلفية. سيكون التطبيق قادرًا أيضًا على الوصول إلى الواجهة الخلفية والاستعلام عن البيانات من صفك وعرض الدرجات المحفوظة.

في الجزء العلوي من بنية العرض في ContentView.swift قم بإنشاء خصائص الحالة القابلة للتغيير التالية:

@State private var newScore: Int = ""
@State private var scores: [PFObject] = []

ستقوم خصائص الحالة هذه بتشغيل تحديثات العرض عندما تتغير قيمها. تُعلن الأولى خاصية حالة تُسمى newScore من النوع String. وهي تمثل قيمة الإدخال التي أدخلها المستخدم لنتيجة جديدة. تتم تهيئتها بسلسلة فارغة "".

تُعلن الثانية عن خاصية حالة تُسمى الدرجات من النوع [PFObject]، وهي عبارة عن مصفوفة من مثيلات PFObject. سيمثل ذلك الدرجات التي تم جلبها من الواجهة الخلفية.

فئة PFObject هي عبارة عن كائن صنف يوفره Parse-SDK-iOS يمكنه تخزين البيانات. تتيح لك تحديد خصائص وقيم مخصصة لكائناتك، والتي يمكن حفظها بعد ذلك في الواجهة الخلفية.

بعد ذلك، داخل عنصر VStack، أضف مقتطف الشيفرة التالي داخل عنصر VStack:

VStack {
  TextField("EnterScore", text: $newScore)
    .textFieldStyle(RoundedBorderTextFieldStyle())
    .padding()
  Button("Save Scores") {
    saveScore()
  }

  List(scores, id: \\.objectId) { score in
    Text(score["score"] as? String ?? "")
  }
}
.padding()
.onAppear {
  fetchScores()
}

لديك حقل نصي TextField حيث سيدخل المستخدمون درجة. معلمة النص مرتبطة بمتغير الحالة newScore، مما يعني أن أي تغييرات في حقل النص ستنعكس في متغير newScore.

بعد ذلك، يوجد زر “حفظ النتائج” الذي يُفعِّل دالة saveScore() عند النقر عليه.

يعرض مكون القائمة الدرجات التي تم جلبها من الواجهة الخلفية. تستخدم مصفوفة الدرجات لتعبئة القائمة، وتحدد معلمة المعرف معرِّفًا فريدًا لكل عنصر من عناصر الدرجات. داخل القائمة، لديك طريقة عرض نصية تعرض قيمة النتيجة كسلسلة.

يمكنك استخدام التسلسل الاختياري وعامل التجميع الاختياري (؟؟؟) للتعامل مع الحالات التي تكون فيها النتيجة غير متوفرة أو من نوع مختلف.

أخيرًا، يُستخدم مُعدِّل onAppear لتشغيل دالة fetchScores() عند ظهور عرض VStack.

عند هذه النقطة، يجب أن تتلقى خطأً مفاده أنه لا يمكن العثور على saveScores() و fetchScores().

ستنشئ هذه الدوال بعد ذلك. ستتعامل هذه الدوال مع كتابة البيانات وحفظها وجلب تلك البيانات المحفوظة، على التوالي، من تطبيق Back4app الخلفي المرتبط الخاص بك.

استخدم استدعاء طريقة .save() أو saveInBackground() لحفظ المتغير newScore في الواجهة الخلفية:

func saveScore() {
  let score = PFObject(className: "GameScore")
  score["score"] = newScore

  score.saveInBackground { success, error in
    if let error = error {
      print("Error saving score: \\(error.localizedDescription)")
    } else {
      print("Score saved sucessfully: \\(String(describing: score.objectId))")
      newScore = ""
      fetchScores()
    }

  }
}

أولاً، تقوم بإنشاء مثيل جديد من PFObject باسم الفئة “GameScore”. يمثل هذا الكائن إدخالًا جديدًا في قاعدة البيانات الخلفية. في السطر التالي، تقوم بتعيين خاصية “النتيجة” للكائن إلى القيمة المخزنة في newScore.

بعد ذلك، يمكنك استدعاء أسلوب الحفظ في الخلفية على كائن النتيجة. سيؤدي استخدام الحفظ في الخلفية إلى بدء عملية حفظ غير متزامنة يتم تنفيذها على قائمة انتظار في الخلفية. داخل إغلاق الإكمال، تتحقق من حدوث خطأ أثناء عملية الحفظ وتعالج الخطأ.

بعد حفظ النتيجة بنجاح، تقوم بإعادة تعيين متغير الحالة newScore إلى سلسلة فارغة لمسح الحقل النصي. بعد ذلك، قم باستدعاء الدالة fetchScores() لتحديث قائمة الدرجات.

داخل الدالة fetchScores() ، ستستخدم دالة PFQuery من Parse لإجراء استعلامات على بيانات الواجهة الخلفية واسترداد الكائنات من فئة معينة. في هذه الحالة، هذه الفئة هي فئة GameScore:

func fetchScores() {
  let query = PFQuery(className: "GameScore")
  query.findObjectsInBackground { objects, error in
    if let error = error {
      print("Error fetching scores: \\(error.localizedDescription)")
    } else if let objects = objects {
      scores = objects
    }

  }
}

هنا تقوم باستدعاء أسلوب findObjectsInBackground على كائن الاستعلام لبدء عملية الجلب غير المتزامن. داخل إغلاق الإكمال، يمكنك التعامل مع نتائج ذلك الاستعلام.

إذا حدث خطأ أثناء عملية الجلب، فإنك تطبع رسالة خطأ. خلاف ذلك، إذا نجحت عملية الجلب وتم إرجاع الكائنات، فإنك تقوم بتحديث متغير حالة الدرجات بالكائنات التي تم جلبها. تمثل هذه الكائنات النتائج المسترجعة من الواجهة الخلفية.

عند تشغيل التطبيق، وإدخال نتيجة جديدة، والضغط على زر حفظ النتائج، سيقوم التطبيق بإرسال قيمة نتيجتك الجديدة وحفظها إلى الواجهة الخلفية وجلب جميع النتائج المحفوظة المخزنة. يجب أن يعرض بعد ذلك قائمة بالنتائج مثل الصورة أدناه.

محاكاة التطبيق
محاكاة التطبيق

لاحظ كيف تتوافق الدرجات مع قيم الدرجات في الواجهة الخلفية.

الواجهة الخلفية لـ Back4app Back4app

هذا يؤكد أن الاختبار قد تم اجتيازه، وأنك تكتب وتقرأ البيانات بنجاح من الواجهة الخلفية ل Back4App.

أنت تعرف الآن كيفية إنشاء واجهة خلفية لتطبيقات الجوال التي تعمل بنظام iOS باستخدام Back4App ولغة برمجة Swift.


Leave a reply

Your email address will not be published.