1. نظرة عامة
مرحبًا بك في برنامج التدريب العملي حول دمج حزمة تطوير البرامج (SDK) الخاصة بخدمة "توزيع التطبيقات على Firebase" في تطبيق iOS. في هذا الدرس العملي، ستضيف حزمة تطوير البرامج (SDK) الخاصة بميزة App Distribution إلى تطبيقك لعرض تنبيهات داخل التطبيق للمختبِرين عند توفّر إصدارات جديدة للتنزيل. ستتعرّف على كيفية استخدام كلّ من الإعدادات الأساسية والإعدادات المخصّصة لتسجيل دخول المختبِرين وتلقّي التحديثات. بعد ذلك، ستدفع إصدارًا جديدًا إلى App Distribution وسيتم إرسال تنبيه جديد بشأن الإصدار مباشرةً في التطبيق.
أهداف الدورة التعليمية
- كيفية استخدام App Distribution لتوزيع إصدار تجريبي من تطبيق على مختبِرين مباشرين
- كيفية دمج حزمة تطوير البرامج (SDK) لنظام التشغيل iOS في "توزيع التطبيقات" في تطبيقك
- كيفية تنبيه أحد المختبِرين عند توفّر إصدار جديد من الإصدارات التجريبية قبل الإصدار جاهز للتثبيت
- كيفية تخصيص حزمة تطوير البرامج (SDK) لتناسب احتياجات الاختبار الفريدة
المتطلبات
- Xcode 12 (أو إصدار أحدث)
- CocoaPods 1.9.1 (أو إصدار أحدث)
- حساب مطوِّر على Apple للتوزيع المخصّص
- جهاز iOS فعلي للاختبار (سيعمل تطبيق محاكي iOS مع معظم أجزاء الدرس العملي، ولكن لا يمكن للمحاكيات تنزيل الإصدارات).
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك في إنشاء تطبيقات iOS؟
2. إنشاء مشروع Firebase وإعداده
إنشاء مشروع جديد على Firebase
- سجِّل الدخول إلى وحدة تحكّم Firebase باستخدام حسابك على Google.
- انقر على الزر لإنشاء مشروع جديد، ثم أدخِل اسم المشروع (على سبيل المثال،
App Distribution Codelab
). - انقر على متابعة.
- إذا طُلب منك ذلك، راجِع بنود Firebase واقبلها، ثم انقر على متابعة.
- (اختياري) فعِّل ميزة "المساعدة المستندة إلى الذكاء الاصطناعي" في وحدة تحكّم Firebase (المعروفة باسم "Gemini في Firebase").
- في هذا الدرس العملي، لا تحتاج إلى "إحصاءات Google"، لذا أوقِف خيار "إحصاءات Google".
- انقر على إنشاء مشروع، وانتظِر إلى أن يتم توفير مشروعك، ثم انقر على متابعة.
إضافة تطبيق إلى Firebase
اتّبِع المستندات لتسجيل تطبيقك في Firebase. استخدِم "com.google.firebase.codelab.AppDistribution.<your_name>" كمعرّف حزمة iOS.
عندما يُطلب منك ذلك، نزِّل ملف GoogleService-Info.plist
الخاص بمشروعك. ستحتاج إلى ذلك لاحقًا.
3- الحصول على المشروع التجريبي
تنزيل الرمز
ابدأ بنسخ مشروع العيّنة.
git clone git@github.com:googlecodelabs/firebase-appdistribution-ios.git
إذا لم يكن git مثبّتًا لديك، يمكنك أيضًا تنزيل المشروع النموذجي من صفحة GitHub أو من خلال النقر على هذا الرابط.
تنزيل التبعيات وفتح المشروع في Xcode
- افتح Podfile في الدليل نفسه
cd firebase-appdistribution-ios/start Open Podfile
- أضِف السطر التالي إلى ملف podfile:
Podfile
pod 'Firebase/AppDistribution'
نفِّذ الأمر pod update
في دليل المشروع وافتح المشروع في Xcode.
pod install --repo-update xed .
تعديل معرّف الحزمة ليتطابق مع تطبيقك على Firebase
في القائمة اليمنى، انقر مرّتين على AppDistributionExample. بعد ذلك، ابحث عن علامة التبويب عام، وغيِّر معرّف الحزمة ليتطابق مع معرّف حزمة تطبيقك على Firebase، والذي يمكن العثور عليه في إعدادات المشروع. يجب أن تكون القيمة "com.google.firebase.codelab.AppDistribution.<your_name>"
إضافة Firebase إلى تطبيقك
ابحث عن ملف GoogleService-Info.plist
الذي نزّلته سابقًا في نظام الملفات، واسحبه إلى جذر مشروع Xcode. يمكنك أيضًا تنزيل هذا الملف في أي وقت من صفحة الإعدادات الخاصة بمشروعك.
في ملف AppDistributionExample/AppDelegate.swift
، استورِد Firebase في أعلى الملف
AppDistributionExample/AppDelegate.swift
import Firebase
وفي طريقة didFinishLaunchingWithOptions
، أضِف طلبًا لإعداد Firebase.
AppDistributionExample/AppDelegate.swift
FirebaseApp.configure()
4. إعداد تنبيهات بشأن الإصدارات الجديدة داخل التطبيق باستخدام App Distribution SDK
في هذه الخطوة، ستضيف حزمة تطوير البرامج (SDK) لخدمة "توزيع التطبيقات على Firebase" إلى تطبيقك وستعرض تنبيهات داخل التطبيق للمختبِرين عند توفّر إصدارات جديدة من تطبيقك لتثبيتها. لإجراء ذلك، تأكَّد من تفعيل Firebase App Testers API لمشروع "Firebase Codelab" (في Google Cloud Console). عليك تسجيل الدخول باستخدام الحساب نفسه واختيار المشروع الصحيح من القائمة المنسدلة في أعلى الصفحة.
ضبط التنبيهات داخل التطبيق
توفّر حزمة تطوير البرامج (SDK) الخاصة بخدمة "توزيع التطبيقات" طريقتَين لإعداد تنبيهات الإصدار داخل التطبيق للمختبِرين: إعداد تنبيه أساسي يتضمّن مربّع حوار تسجيل دخول مُعدًّا مسبقًا لعرضه على المختبِرين، وإعداد تنبيه متقدّم يتيح لك تخصيص واجهة المستخدم الخاصة بك.
سنبدأ بإعداد التنبيه الأساسي. يمكنك استخدام checkForUpdate
لعرض مربّع حوار مُعدّ مسبقًا لتفعيل التنبيهات للمختبِرين الذين لم يفعّلوها بعد، ثم التحقّق مما إذا كان هناك إصدار جديد متاح. يُفعّل المختبِرون التنبيهات من خلال تسجيل الدخول إلى حساب لديه إذن الوصول إلى التطبيق في "توزيع التطبيقات". عند استدعاء الطريقة، يتم تنفيذ التسلسل التالي:
- تتحقّق هذه الطريقة ممّا إذا كان أحد المختبِرين قد فعّل التنبيهات. إذا لم يكن الأمر كذلك، يتم عرض مربّع حوار مُعدّ مسبقًا يطلب منهم تسجيل الدخول إلى App Distribution باستخدام حساب Google.
تفعيل التنبيهات هو عملية تتم لمرة واحدة على الجهاز الاختباري وتستمر في جميع تحديثات تطبيقك. وتبقى التنبيهات مفعَّلة على الجهاز الاختباري إلى أن يتم إلغاء تثبيت التطبيق أو إلى أن يتم استدعاء الطريقة signOutTester
. لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المرجعية للطريقة ( Swift أو Objective-C).
يمكنك تضمين checkForUpdate
في أي وقت في تطبيقك. على سبيل المثال، يمكنك أن تطلب من المختبِرين تثبيت الإصدارات الجديدة المتاحة عند بدء التشغيل من خلال تضمين checkForUpdate في viewDidAppear الخاص بـ UIViewController.
في ملف AppDistributionViewController.swift
، استورِد Firebase في أعلى الملف
AppDistributionViewController.swift
import Firebase
افتح الملف AppDistributionExample/AppDistributionViewController.swift، وانسخ الأسطر إلى طريقة viewDidAppear
على النحو التالي:
AppDistributionViewController.swift
override func viewDidAppear(_ animated: Bool) {
checkForUpdate()
}
لننفّذ الآن طريقة checkForUpdate().
AppDistributionViewController.swift
private func checkForUpdate() {
AppDistribution.appDistribution().checkForUpdate(completion: { [self] release, error in
var uiAlert: UIAlertController
if error != nil {
uiAlert = UIAlertController(title: "Error", message: "Error Checking for update! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
} else if release == nil {
uiAlert = UIAlertController(title: "Check for Update", message: "No releases found!!", preferredStyle: .alert)
uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default))
} else {
guard let release = release else { return }
let title = "New Version Available"
let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
uiAlert = UIAlertController(title: title, message: message, preferredStyle: .alert)
uiAlert.addAction(UIAlertAction(title: "Update", style: UIAlertAction.Style.default) {
_ in
UIApplication.shared.open(release.downloadURL)
})
uiAlert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel) {
_ in
})
}
self.present(uiAlert, animated: true, completion: nil)
})
}
5- إنشاء تطبيق ودعوة مختبِرين لتنزيله
في هذه الخطوة، ستنشئ تطبيقك وتختبر عملية التنفيذ من خلال توزيع الإصدار على المختبِرين باستخدام وحدة تحكّم Firebase.
إنشاء تطبيقك
عندما تكون مستعدًا لتوزيع إصدار تجريبي من تطبيقك على المختبِرين، اختَر "أي جهاز iOS (arm64)" كوجهة للإنشاء، ثم Product->Archive. بعد إنشاء الأرشيف، أنشئ حزمة توزيع موقّعة باستخدام ملف توزيع التطبيق في مرحلة التطوير.
عند اكتمال عملية الإنشاء، يتم حفظ ملف IPA وبعض ملفات السجلّ في المجلد الذي تحدّده. يمكنك توزيع ملف IPA على المختبِرين باتّباع الخطوات التالية.
إذا واجهت مشاكل في إنشاء تطبيقك، يمكنك الاطّلاع على مستندات توقيع الرموز من Apple للحصول على خطوات تحديد المشاكل وحلّها.
توزيع تطبيقك على المختبِرين
لتوزيع تطبيقك على المختبِرين، حمِّل ملف IPA باستخدام وحدة تحكّم Firebase:
- افتح صفحة App Distribution في وحدة تحكّم Firebase. اختَر مشروعك على Firebase عند مطالبتك بذلك.
- انقر على البدء.
- في صفحة "الإصدارات"، اختَر التطبيق الذي تريد توزيعه من القائمة المنسدلة.
- اسحب ملف IPA الخاص بتطبيقك إلى وحدة التحكّم لتحميله.
- عند اكتمال عملية التحميل، حدِّد مجموعات المختبِرين والمختبِرين الفرديين الذين تريد أن يتلقّوا الإصدار. (أضِف عنوان بريدك الإلكتروني لتلقّي الدعوة). بعد ذلك، أضِف ملاحظات الإصدار للنسخة. اطّلِع على مقالة إدارة المختبِرين لمعرفة المزيد حول إنشاء مجموعات المختبِرين.
- انقر على "توزيع" لإتاحة الإصدار للمختبِرين.
إضافة نفسك كمختبِر للإصدار
في وحدة تحكّم Firebase، يمكنك الآن الاطّلاع على المختبِرين الذين أضفتهم ضمن إصدار تطبيقك.
بما أنّك أدرجت عنوان بريدك الإلكتروني، ستتلقّى رسالة إلكترونية من Firebase App Distribution تدعوك إلى اختبار التطبيق. أنت الآن أول مختبِر. تابِع القسم أدناه لإعداد جهازك الاختباري كمختبِر.
تسجيل جهاز الاختبار
عليك أولاً تسجيل جهازك الاختباري لتنزيل إصدار Ad Hoc واختباره.
- على جهاز اختبار iOS، افتح الرسالة الإلكترونية المُرسَلة من Firebase App Distribution وانقر على الرابط "البدء". احرص على فتح الرابط في Safari.
- في تطبيق الويب الخاص بالمختبِرين Firebase App Distribution الذي يظهر، سجِّل الدخول باستخدام حسابك على Google وانقر على قبول الدعوة.
ستظهر لك الآن الأغنية التي تمت دعوتك للمشاركة فيها.
- انقر على تسجيل الجهاز لمشاركة رقم التعريف الفريد للجهاز مع Firebase حتى تتمكّن من تعديل ملف الإعداد الخاص بتطبيقك لاحقًا.
- اتّبِع التعليمات، وانتقِل إلى الإعدادات لتنزيل الملف الشخصي ومشاركة معرّف الجهاز الفريد (UDID).
الآن، عند الرجوع إلى App Distribution، سيتم وضع علامة "تم تسجيل الجهاز" على الإصدار:
تمت الآن مشاركة المعرّف الفريد للجهاز مع المطوّر. على المطوّر الآن إنشاء إصدار جديد من التطبيق للمختبِر.
عرض معلومات المختبِرين في وحدة التحكّم
بالعودة إلى طريقة عرض المطوّر في وحدة تحكّم Firebase، سيظهر المختبِر على أنّه "تمت الموافقة عليه" ضمن الإصدار:
ستتلقّى أيضًا رسالة إلكترونية بصفتك المطوّر إذا لم يكن الجهاز الذي يستخدمه مضمّنًا في ملف الإعداد. سيتم إعلامك بمعرّف الجهاز الفريد الجديد الذي عليك إضافته. يمكنك أيضًا تصدير جميع أرقام تعريف الأجهزة الفريدة (UDID) كملف نصي.
- لتصدير جميع أرقام تعريف الأجهزة الفريدة (UDID)، افتح علامة التبويب "المختبِرون والمجموعات".
- انقر على "تصدير أرقام تعريف الأجهزة الفريدة (UDID) من Apple".
يجب أن يحتوي الملف على المعرّف الفريد للجهاز (UDID) لجهاز الاختبار.
Device ID Device Name Device Platform
1234567890 tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen ios
عند تلقّي إحدى هذه الرسائل الإلكترونية، عدِّل ملف الإعداد باستخدام UDID ووزِّع إصدارًا جديدًا على المختبِرين باتّباع الخطوات التالية:
- أضِف الأجهزة إلى بوابة مطوّري Apple.
- الخيار 1: استيراد معرّفات الأجهزة الفريدة كملف CSV في علامة التبويب "المختبِرون والمجموعات" ضِمن لوحة بيانات App Distribution، اختَر "جميع المختبِرين"، ثم انقر على "تصدير أرقام تعريف الأجهزة الفريدة (UDID) من Apple" لتنزيل ملف CSV. بعد ذلك، استورِد الملف إلى حساب المطوّر على Apple باستخدام خيار "تسجيل أجهزة متعددة". يمكنك الاطّلاع على مستندات Apple لمعرفة المزيد. يُرجى العِلم أنّ حساب المطوّر الخاص بك على Apple قد يسمح لك باستيراد عدد محدود من الأجهزة سنويًا.
- الخيار 2: جمع معرّفات الأجهزة الفريدة وإدخالها عبر البريد الإلكتروني في صفحة إضافة أجهزة على بوابة مطوّري Apple، سجِّل معرّف الجهاز الفريد الجديد المحدّد في الرسالة الإلكترونية التي تلقّيتها.
- أضِف الأجهزة المسجّلة إلى ملف الإعداد.
- نزِّل ملف الإعداد واستخدِمه لإعادة إنشاء تطبيقك. إذا كنت تعيد الإنشاء فقط لتعديل الأجهزة المسجّلة، لا تعدِّل رقم الإصدار أو الإصدار.
- أعِد توزيع تطبيقك من وحدة تحكُّم Firebase أو واجهة سطر الأوامر (CLI). إذا سبق لك توزيع إصدار يحمل رقم الإصدار نفسه، سيتلقّى مستخدمو الأجهزة المسجّلة حديثًا فقط إشعارات عبر البريد الإلكتروني.
تنزيل الإصدار من الجهاز الاختباري
يتضمّن الإصدار الآن المعرّف الفريد للجهاز الاختباري، وبالتالي يمكن للجهاز الاختباري تنزيل التطبيق وتثبيته. ترسل خدمة "توزيع التطبيق" رسالة إلكترونية إلى المختبِرين عند إضافة المعرّف الفريد للجهاز إلى إصدار جديد.
- على الجهاز الاختباري، ارجع إلى تطبيق App Distribution على الويب الخاص بالمختبِرين باستخدام الرابط الوارد في الرسالة الإلكترونية أو الرمز على الشاشة الرئيسية للجهاز.
عند الانتقال إلى تطبيق UDID codelab، يمكنك ملاحظة أنّ الإصدار جاهز للتنزيل.
- إذا كنت تستخدم جهازًا فعليًا، انقر على "تنزيل"، ثم ثبِّت التطبيق وشغِّله.
- عند بدء تشغيل التطبيق، سيطلب منك تفعيل تنبيهات الإصدارات الجديدة. اختَر "تفعيل".
- بعد ذلك، سيُطلب منك تسجيل الدخول. انقر على "متابعة".
- سجِّل الدخول باستخدام حسابك التجريبي.
- سيتم نقلك مرة أخرى إلى التطبيق، ولن تحتاج إلى تسجيل الدخول أو قبول التنبيهات في المرة القادمة التي تشغّل فيها التطبيق.
توزيع تحديث على المختبِرين
- عدِّل رقم الإصدار إلى "2".
- اختَر "أي جهاز iOS (arm64)" كوجهة الإنشاء، ثمّ Product->Archive. بعد إنشاء الأرشيف، أنشئ حزمة توزيع موقّعة باستخدام ملف توزيع التطبيق الخاص بمرحلة التطوير.
- عند اكتمال عملية الإنشاء، يتم حفظ ملف IPA وبعض ملفات السجلّ في المجلد الذي تحدّده. حمِّل ملف IPA الجديد هذا في وحدة تحكّم Firebase، وأضِف عنوان بريدك الإلكتروني كمختبِر مرة أخرى، ثم وزِّع التطبيق.
تنبيهات الإصدار التجريبي
- تأكَّد من إغلاق التطبيق إذا كان مفتوحًا. أعِد تشغيل التطبيق.
- عند إعادة تشغيل التطبيق، من المفترض أن تتلقّى تنبيهًا بعنوان "يتوفّر إصدار جديد".
- انقر على "تحديث" للحصول على أحدث إصدار.
- انقر على "تثبيت" في الشاشة التالية.
- تهانينا! لقد تمكّنت من تعديل تطبيقك باستخدام التنبيهات المضمّنة.
6. تخصيص عملية تسجيل الدخول للمختبِر
تمنحك الطريقتان signInTester/signOutTester وisTesterSignedIn مرونة أكبر في تخصيص تجربة تسجيل الدخول للمختبِر، ما يتيح لك مطابقة شكل تطبيقك وأسلوبه بشكل أفضل.
يتحقّق المثال التالي ممّا إذا كان المختبِر قد سجّل الدخول إلى حساب المختبِر على Firebase App Distribution، حتى تتمكّن من اختيار عرض واجهة مستخدم تسجيل الدخول للمختبِرين الذين لم يسجّلوا الدخول بعد. بعد أن يسجّل المختبِر الدخول، يمكنك بعد ذلك استدعاء checkForUpdate للتحقّق مما إذا كان بإمكان المختبِر الوصول إلى إصدار جديد.
لنوقِف البحث عن التحديثات تلقائيًا في viewDidAppear من خلال وضع علامة تعليق على طلب checkForUpdate().
AppDistributionViewController.swift
override func viewDidAppear(_ animated: Bool) {
// checkForUpdate()
}
بدلاً من ذلك، لنستدعِ الدالة checkForUpdate() في checkForUpdateButtonClicked().
@objc func checkForUpdateButtonClicked() {
checkForUpdate()
}
لننفّذ الآن طريقة signInOutButtonClicked() التي ستسجّل دخول المستخدم إذا كان مسجّلاً الخروج، أو ستسجّل خروج المستخدم إذا كان مسجّلاً الدخول.
AppDistributionViewController.swift
@objc func signInOutButtonClicked() {
if isTesterSignedIn() {
AppDistribution.appDistribution().signOutTester()
self.configureCheckForUpdateButton()
self.configureSignInSignOutButton()
self.configureSignInStatus()
} else {
AppDistribution.appDistribution().signInTester(completion: { error in
if error == nil {
self.configureCheckForUpdateButton()
self.configureSignInSignOutButton()
self.configureSignInStatus()
} else {
let uiAlert = UIAlertController(title: "Custom:Error", message: "Error during tester sign in! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default) {
_ in
})
self.present(uiAlert, animated: true, completion: nil)
}
})
}
}
أخيرًا، لننفِّذ الطريقة isTesterSignedIn.
AppDistributionViewController.swift
private func isTesterSignedIn() -> Bool {
return AppDistribution.appDistribution().isTesterSignedIn
}
إنشاء عملية التنفيذ واختبارها
7. تهانينا!
أنشأت ميزة "عرض التنبيهات داخل التطبيق" في أحد التطبيقات باستخدام حزمة تطوير البرامج (SDK) لنظام التشغيل iOS في "توزيع التطبيقات على Firebase".
المواضيع التي تناولناها
- Firebase App Distribution
- Firebase App Distribution New Alerts iOS SDK
الخطوات التالية
مزيد من المعلومات
هل لديك أي أسئلة؟
الإبلاغ عن مشاكل