1- نظرة عامة
مرحبًا بك في ميزة دمج Firebase App Distribution SDK في الدرس التطبيقي حول ترميز تطبيق iOS. في هذا الدرس التطبيقي حول الترميز، عليك إضافة حزمة تطوير البرامج (SDK) لتوزيع التطبيقات إلى تطبيقك من أجل عرض تنبيهات داخل التطبيق للمختبِرين عند توفُّر إصدارات جديدة للتنزيل. وستتعرَّف على كيفية استخدام الإعداد الأساسي وطريقة الضبط المخصَّصة لتسجيل دخول المختبِرين لتلقّي التحديثات. بعد ذلك، يجب إرسال إصدار جديد إلى ميزة "توزيع التطبيقات" وتشغيل تنبيه إصدار جديد في التطبيق مباشرةً.
المعلومات التي ستطّلع عليها
- كيفية استخدام ميزة App Distribution لتوزيع تطبيق تجريبي على المختبِرين المباشرين
- كيفية دمج حزمة تطوير البرامج (SDK) لنظام التشغيل iOS لميزة توزيع التطبيقات في تطبيقك
- طريقة تنبيه المختبِر عند توفُّر إصدار تجريبي جديد جاهز للتثبيت
- كيفية تخصيص حزمة SDK لتناسب احتياجات الاختبار الفريدة
المتطلبات
- Xcode 12 (أو إصدار أعلى)
- CocoaPods 1.9.1 (أو إصدار أحدث)
- حساب مطور Apple للتوزيع المخصص
- جهاز iOS فعلي للاختبار. (سيعمل تطبيق محاكي iOS في معظم الدروس التطبيقية حول الترميز، ولكن لا يمكن لمحاكيات Play تنزيل الإصدارات.)
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك في إنشاء تطبيقات iOS؟
2- إنشاء مشروع على "وحدة تحكُّم Firebase"
إضافة مشروع Firebase جديد
- سجّل الدخول إلى Firebase.
- في وحدة تحكُّم Firebase، انقر على "إضافة مشروع"، ثم أدخِل اسمًا لمشروعك "الدرس التطبيقي حول ترميز Firebase".
لا تحتاج إلى تفعيل "إحصاءات Google" لهذا المشروع.
- انقر على إنشاء مشروع.
إضافة التطبيق إلى Firebase
اتّبِع المستندات لتسجيل تطبيقك في Firebase. استخدِم "com.google.firebase.codelab.AppPublisherion.<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
في القائمة اليمنى، انقر مرّتين على AppDistributeionExample. بعد ذلك، حدد موقع علامة التبويب عام وغيّر معرف الحزمة ليتطابق مع معرّف الحزمة لتطبيق Firebase والذي يمكن العثور عليه في إعدادات المشروع. يُفترَض أن يكون هذا العنوان بالتنسيق "com.google.firebase.codelab.AppDistributeion.<your_name>"
إضافة Firebase إلى تطبيقك
حدِّد موقع الملف GoogleService-Info.plist
الذي نزّلته سابقًا في نظام الملفات، واسحبه إلى جذر مشروع Xcode. يمكنك أيضًا تنزيل هذا الملف في أي وقت من صفحة الإعدادات في مشروعك.
في ملف AppDistributionExample/AppDelegate.swift
، استورِد Firebase أعلى الملف.
AppPublisherionExample/AppDelegate.swift.
import Firebase
وفي didFinishLaunchingWithOptions
، أضِف استدعاءً لإعداد Firebase.
AppPublisherionExample/AppDelegate.swift.
FirebaseApp.configure()
4. إعداد تنبيهات الإصدار الجديد داخل التطبيق باستخدام حزمة تطوير البرامج (SDK) لتوزيع التطبيقات
في هذه الخطوة، عليك إضافة حزمة تطوير البرامج (SDK) الخاصة بـ Firebase App Distribution إلى تطبيقك وعرض تنبيهات داخل التطبيق للمختبِرين عند توفُّر إصدارات جديدة من تطبيقك للتثبيت. لإجراء ذلك، تأكَّد من تفعيل واجهة برمجة التطبيقات لاختبار تطبيق Firebase من أجل "الدرس التطبيقي حول ترميز Firebase". (في Google Cloud Console). ستحتاج إلى تسجيل الدخول باستخدام الحساب نفسه واختيار المشروع الصحيح من القائمة المنسدلة في أعلى الصفحة.
ضبط التنبيهات داخل التطبيق
توفِّر حزمة تطوير البرامج (SDK) لتوزيع التطبيقات طريقتَين لإعداد تنبيهات الإصدارات داخل التطبيق للمختبِرين، وهما: ضبط أساسي للتنبيه يتضمّن مربّع حوار مُضمَّن مسبقًا لتسجيل الدخول لعرضه للمختبِرين، وإعدادات متقدِّمة للتنبيهات تتيح لك تخصيص واجهة المستخدم الخاصة بك.
سنبدأ بتهيئة التنبيه الأساسية. يمكنك استخدام checkForUpdate
لعرض مربّع حوار تفعيل التنبيهات المُعدّ مسبقًا للمختبِرين الذين لم يفعّلوا التنبيهات بعد، ثم التحقّق من توفُّر إصدار جديد. يفعّل المختبِرون التنبيهات من خلال تسجيل الدخول إلى حساب لديه إمكانية الوصول إلى التطبيق في ميزة App Distribution. عند استدعائها، تؤدي الطريقة التسلسل التالي:
- يتحقّق مما إذا كان المختبِر قد فعّل التنبيهات. وإذا لم يكن كذلك، سيتم عرض مربع حوار مُعدّ مسبقًا يطلب منهم تسجيل الدخول إلى ميزة "توزيع التطبيقات" باستخدام حسابهم على Google.
تتم عملية تفعيل التنبيهات لمرة واحدة على الجهاز الاختباري وتستمر في جميع تحديثات تطبيقك. وتظل التنبيهات مفعَّلة على جهاز الاختبار إلى أن يتم إلغاء تثبيت التطبيق أو إلى أن يتم استدعاء طريقة signOutTester
. راجع المستندات المرجعية للطريقة ( Swift أو Objective-C) للحصول على مزيد من المعلومات.
يمكنك تضمين checkForUpdate
في أي وقت في تطبيقك. على سبيل المثال، يمكنك أن تطلب من المختبِرين تثبيت الإصدارات المتاحة حديثًا عند بدء التشغيل من خلال تضمين checkForUpdate في viewDoes الموضّح في UIViewController.
في ملف AppDistributionViewController.swift
، استورِد Firebase أعلى الملف.
AppDistributeionViewController.swift:
import Firebase
افتح AppPublisherionExample/AppPublisherionViewController.swift، وانسخ الأسطر في طريقة viewDidAppear
على النحو التالي:
AppDistributeionViewController.swift:
override func viewDidAppear(_ animated: Bool) {
checkForUpdate()
}
لنقم الآن بتنفيذ طريقة CheckForUpdate().
AppDistributeionViewController.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)". كوجهة الإصدار، والمنتج->الأرشفة. بعد إنشاء الأرشيف، أنشِئ توزيعًا مُوقَّعًا باستخدام الملف الشخصي للتوزيع في قسم التطوير.
وعند اكتمال عملية الإنشاء، يتم حفظ ملف IPA وبعض ملفات السجلات في المجلد الذي تحدده. ويمكنك توزيع ملف IPA على المختبِرين من خلال الخطوات التالية.
إذا واجهت مشاكل في إنشاء تطبيقك، يمكنك الاطّلاع على مستندات توقيع الرموز من Apple للحصول على خطوات تحديد المشاكل وحلّها.
توزيع تطبيقك على المختبِرين
لتوزيع تطبيقك على المختبِرين، حمِّل ملف IPA باستخدام وحدة تحكُّم Firebase:
- افتح صفحة "توزيع التطبيقات" في وحدة تحكُّم Firebase. اختَر مشروعك في Firebase عندما يُطلب منك ذلك.
- اضغط على البدء.
- في صفحة "الإصدارات"، اختَر التطبيق الذي تريد توزيعه من القائمة المنسدلة.
- اسحب ملف IPA الخاص بتطبيقك إلى وحدة التحكم لتحميله.
- عند اكتمال التحميل، حدِّد مجموعات المختبِرين والمختبِرين الفرديين الذين تريد تلقّي الإصدار منهم. (أضِف عنوان بريدك الإلكتروني لتلقّي الدعوة). بعد ذلك، يمكنك إضافة ملاحظات الإصدار الخاصة بالإصدار. يُرجى الاطّلاع على مقالة إدارة المختبِرين لمعرفة مزيد من المعلومات حول إنشاء مجموعات المختبِرين.
- انقر على "توزيع" لإتاحة الإصدار للمختبِرين.
إضافة نفسك كمختبِر إلى الإصدار
من خلال "وحدة تحكُّم Firebase"، يمكنك الآن الاطّلاع على المختبِرين الذين أضفتهم ضمن إصدار تطبيقك.
نظرًا لأنك ضمّنت عنوان بريدك الإلكتروني، ستتلقى رسالة إلكترونية من Firebase App Distribution تدعوك إلى اختبار التطبيق. أنت الآن المختبِر الأول! راجِع القسم أدناه لإعدادك كمختبِر على جهاز الاختبار.
تسجيل جهاز الاختبار
ستحتاج أولاً إلى تسجيل جهازك الاختباري لتنزيل إصدار مخصّص واختباره.
- على جهاز iOS الاختباري، افتح الرسالة الإلكترونية المُرسَلة من Firebase App Distribution والنقر على رابط "البدء". تأكد من فتح الرابط في Safari.
- في تطبيق الويب المستخدَم لاختبار Firebase App Distribution الذي يظهر، سجِّل الدخول باستخدام حسابك على Google وانقر على قبول الدعوة.
سيظهر لك الآن الإصدار الذي تمت دعوتك إليه.
- انقر على تسجيل الجهاز لمشاركة المعرّف الفريد للجهاز مع Firebase حتى يتسنّى لك تعديل الملف الشخصي لإدارة الحسابات لتطبيقك لاحقًا.
- اتّبِع التعليمات وانتقِل إلى الإعدادات لتنزيل الملف الشخصي ومشاركة المعرِّف الفريد للجهاز.
والآن، عند الرجوع إلى ميزة "توزيع التطبيقات"، يتم الآن وضع علامة "تم تسجيل الجهاز" على الإصدار:
تمت مشاركة المعرِّف الفريد الخاص بالمختبِر مع المطوّر الآن. يرجع الأمر الآن إلى المطوّر في إنشاء إصدار جديد من التطبيق للمختبِر.
عرض معلومات المختبِر في وحدة التحكّم
عند الرجوع إلى الملف الشخصي للمطوّر في "وحدة تحكُّم Firebase"، سيظهر المختبِر على أنّه "مقبول". ضمن الإصدار:
وبعد ذلك، ستتلقّى أيضًا رسالة إلكترونية بصفتك المطوّر في حال لم يكن الجهاز الذي يستخدمه مُدرَجًا في الملف الشخصي لتوفير المتطلبات اللازمة. سيُعلِمك هذا المعرِّف بمعرِّف الجهاز الفريد (UDID) الجديد الذي تحتاج إلى إضافته. يتوفر لك أيضًا خيار تصدير جميع المعرّفات الفريدة (UDID) كملف نصي.
- لتصدير جميع المعرّفات الفريدة للأجهزة (UDID)، افتح "أداة الاختبار" علامة التبويب "المجموعات".
- انقر على "تصدير معرّفات Apple UDIDs".
يجب أن يحتوي الملف على المعرّف الفريد للجهاز الاختباري.
Device ID Device Name Device Platform
1234567890 tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen ios
عند تلقي إحدى هذه الرسائل الإلكترونية، يمكنك تحديث ملفك الشخصي لإدارة الحسابات باستخدام المعرّف الفريد للجهاز وتوزيع إصدار جديد على المختبرين من خلال اتباع الخطوات التالية:
- يمكنك إضافة الأجهزة إلى بوابة مطوّري برامج Apple.
- الخيار 1: استيراد أرقام التعريف الفريد للجهاز كملف CSV. في المختبِرين ضمن علامة التبويب "المجموعات" في لوحة بيانات "توزيع التطبيقات"، اختَر "كل المختبِرين"، ثم انقر على "تصدير معرّفات Apple UDID" لتنزيل ملف CSV. بعد ذلك، استورد الملف إلى حساب مطور Apple باستخدام خيار تسجيل أجهزة متعددة. راجِع مستندات Apple للحصول على مزيد من المعلومات. تجدر الإشارة إلى أنّ حساب المطوّر الخاص بك على Apple قد يسمح لك باستيراد عدد محدود من الأجهزة سنويًا.
- الخيار 2: جمع المعرّفات الفريدة للأجهزة (UDID) عبر البريد الإلكتروني وإدخالها في صفحة إضافة أجهزة ببوابة مطوّري برامج Apple، سجّل المعرِّف الفريد للجهاز المحدد في الرسالة الإلكترونية التي تلقيتها.
- أضِف الأجهزة المسجَّلة إلى الملف الشخصي لإدارة الحسابات.
- يمكنك تنزيل الملف الشخصي لتوفير المتطلبات اللازمة واستخدامه لإعادة إنشاء تطبيقك. إذا كنت تريد إعادة التصميم لتحديث الأجهزة المسجَّلة فقط، لا تُحدِّث رقم الإصدار أو الإصدار.
- أعِد توزيع تطبيقك من وحدة تحكُّم Firebase أو واجهة سطر الأوامر. وإذا كنت قد وزَّعت إصدارًا بنفس رقم الإصدار والإصدار نفسه، لن يتلقّى سوى مستخدمي الأجهزة المسجَّلة حديثًا رسائل إلكترونية للإشعارات.
تنزيل الإصدار من الجهاز الاختباري
أصبح الإصدار يحتوي الآن على المعرّف الفريد للجهاز الاختباري، لذلك يمكن لجهاز الاختبار تنزيل التطبيق وتثبيته. تُرسِل ميزة App Distribution رسالة إلكترونية إلى المختبِرين عند إضافة المعرِّف الفريد الخاص بهم إلى إصدار جديد.
- على الجهاز الاختباري، ارجع إلى تطبيق الويب لاختبار ميزة App Distribution باستخدام الرابط الوارد في الرسالة الإلكترونية أو الرمز الظاهر على الشاشة الرئيسية للجهاز.
عند الانتقال إلى تطبيق الدرس التطبيقي حول ترميز UDID، يمكنك التأكّد من أنّ الإصدار جاهز للتنزيل.
- إذا كنت تستخدم جهازًا فعليًا، اضغط على "تنزيل" ثم ثبِّت التطبيق وشغِّله.
- عند بدء تشغيل التطبيق، سيطلب منك تفعيل تنبيهات الإصدارات الجديدة. اختيار "تفعيل"
- بعد ذلك، سيُطلب منك تسجيل الدخول. انقر على "متابعة".
- سجِّل الدخول باستخدام حساب الاختبار.
- ستتم إعادة توجيهك إلى التطبيق. لن تضطر إلى تسجيل الدخول أو قبول التنبيهات في المرة القادمة التي تشغل فيها التطبيق.
توزيع تحديث على المختبِرين
- عدِّل رقم الإصدار إلى "2".
- اختيار "أي جهاز iOS (arm64)" كوجهة الإصدار، والمنتج->الأرشفة. بعد إنشاء الأرشيف، يمكنك إنشاء توزيع مُوقَّع باستخدام الملف الشخصي للتوزيع في قسم التطوير.
- وعند اكتمال عملية الإنشاء، يتم حفظ ملف IPA وبعض ملفات السجلات في المجلد الذي تحدده. حمِّل عنوان IPA الجديد هذا في وحدة تحكُّم Firebase، وأضِف بريدك الإلكتروني كمختبِر مرة أخرى ثم وزِّعه.
تنبيهات الإصدار التجريبي
- تأكَّد من إغلاق التطبيق إذا كان مفتوحًا. أعِد تشغيل التطبيق.
- عند إعادة تشغيل التطبيق، من المفترَض أن يظهر لك "إصدار جديد متاح". تنبيه.
- انقر على "تحديث". للحصول على أحدث إصدار.
- انقر على "تثبيت". في الشاشة التالية.
- تهانينا كنت قادرًا على تحديث تطبيقك باستخدام التنبيهات المضمنة.
6- تخصيص عملية تسجيل الدخول للمختبِر
تمنحك الطريقتان signInTester/signOutTester وisTesterSignedIn مرونةً أكبر لتخصيص تجربة تسجيل دخول المختبِر كي تتطابق بشكل أفضل مع شكل تطبيقك ومضمونه.
يتحقّق المثال التالي مما إذا كان المختبِر قد سجّل الدخول من قبل إلى حساب المختبر لخدمة Firebase App Distribution، وذلك كي تتمكّن من اختيار عرض واجهة مستخدم تسجيل الدخول للمختبِرين الذين لم يسجّلوا الدخول بعد. بعد أن يسجّل المختبِر الدخول، يمكنك طلب checkForUpdate لمعرفة ما إذا كان بإمكان المختبِر الوصول إلى إصدار جديد.
لإيقاف التحقّق من التحديثات تلقائيًا في viewDoneAppear من خلال التعليق على استدعاء checkForUpdate() .
AppDistributeionViewController.swift:
override func viewDidAppear(_ animated: Bool) {
// checkForUpdate()
}
بدلاً من ذلك، يمكننا استدعاء checkForUpdate() في checkForUpdateButtonClicked().
@objc func checkForUpdateButtonClicked() {
checkForUpdate()
}
لنتعرّف الآن على طريقة signInOutButtonClicked() التي ستسجِّل دخول المستخدم إذا كان مسجّلاً الخروج أو يسجِّل خروجه إذا كان مسجِّلاً الدخول حاليًا.
AppPublisherionViewController.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.
AppPublisherionViewController.swift.
private func isTesterSignedIn() -> Bool {
return AppDistribution.appDistribution().isTesterSignedIn
}
إنشاء نموذج التنفيذ واختباره
7- تهانينا
لقد أنشأت "عرض التنبيهات داخل التطبيق" في تطبيق باستخدام Firebase App Distribution لنظام التشغيل iOS SDK.
المواضيع التي تناولناها
- Firebase App Distribution
- حزمة تطوير البرامج (SDK) الجديدة للتنبيهات بشأن توزيع التطبيقات من Firebase في نظام التشغيل iOS
الخطوات التالية
مزيد من المعلومات
هل لديك سؤال؟
الإبلاغ عن المشاكل