قم بتنبيه المختبرين بشأن إصدارات تطبيقك الجديدة باستخدام Firebase App Distribution iOS SDK - Codelab

1. نظرة عامة

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

ما ستتعلمه

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

ماذا ستحتاج

  • Xcode 12 (أو أعلى)
  • CocoaPods 1.9.1 (أو أعلى)
  • حساب Apple Developer للتوزيع المخصص
  • جهاز iOS فعلي للاختبار. (سيعمل تطبيق محاكي iOS مع معظم دروس التعليمات البرمجية، لكن المحاكيات لا يمكنها تنزيل الإصدارات.)

كيف ستستخدم هذا البرنامج التعليمي؟

اقرأها من خلال فقط اقرأها وأكمل التمارين

كيف تقيم تجربتك في بناء تطبيقات iOS؟

مبتدئ متوسط بارع

2. إنشاء مشروع وحدة تحكم Firebase

إضافة مشروع Firebase جديد

  1. قم بتسجيل الدخول إلى Firebase.
  2. في وحدة تحكم Firebase، انقر فوق "إضافة مشروع"، ثم قم بتسمية مشروعك "Firebase Codelab".

لا تحتاج إلى تمكين Google Analytics لهذا المشروع.

  1. انقر فوق إنشاء مشروع .

أضف التطبيق إلى 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

  1. افتح ملف Podfile في نفس الدليل
cd firebase-appdistribution-ios/start
Open Podfile
  1. أضف السطر التالي إلى ملف 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. يمكنك أيضًا تنزيل هذا الملف في أي وقت من صفحة إعدادات مشروعك.

3cf9290805e7fdab.png

في ملف AppDistributionExample/AppDelegate.swift قم باستيراد Firebase في الجزء العلوي من الملف

AppDistributionExample/AppDelegate.swift

import Firebase

وفي طريقة didFinishLaunchingWithOptions قم بإضافة استدعاء لتكوين Firebase.

AppDistributionExample/AppDelegate.swift

FirebaseApp.configure()

4. قم بإعداد تنبيهات البناء الجديد داخل التطبيق باستخدام App Distribution SDK

في هذه الخطوة، ستضيف Firebase App Distribution SDK إلى تطبيقك وستعرض تنبيهات داخل التطبيق للمختبرين عندما تكون الإصدارات الجديدة من تطبيقك متاحة للتثبيت. للقيام بذلك، تأكد من تمكين Firebase App Testers API لمشروع "Firebase Codelab" (في Google Cloud Console). ستحتاج إلى تسجيل الدخول بنفس الحساب واختيار المشروع الصحيح من القائمة المنسدلة في الأعلى.

تكوين التنبيهات داخل التطبيق

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

سنبدأ بتكوين التنبيه الأساسي. يمكنك استخدام checkForUpdate لعرض مربع حوار تنبيهات التمكين المُعد مسبقًا للمختبرين الذين لم يقوموا بتمكين التنبيهات بعد، ثم التحقق من توفر إصدار جديد. يقوم المختبرون بتمكين التنبيهات من خلال تسجيل الدخول إلى حساب لديه حق الوصول إلى التطبيق في App Distribution. عند استدعائها، تقوم الطريقة بتفعيل التسلسل التالي:

  1. يتحقق مما إذا كان أحد المختبرين قد قام بتمكين التنبيهات. إذا لم يكن الأمر كذلك، فسيتم عرض مربع حوار معد مسبقًا يطالبهم بتسجيل الدخول إلى App Distribution باستخدام حساب Google الخاص بهم.

يعد تمكين التنبيهات عملية تتم لمرة واحدة على جهاز الاختبار وتستمر عبر تحديثات تطبيقك. تظل التنبيهات ممكنة على جهاز الاختبار حتى يتم إلغاء تثبيت التطبيق، أو حتى يتم استدعاء أسلوب signOutTester . راجع الوثائق المرجعية للطريقة ( Swift أو Objective-C ) لمزيد من المعلومات.

  1. التحقق من الإصدارات المتوفرة حديثًا لكي يقوم المُختبر بتثبيتها. إرجاع كائن الإصدار أو خطأ .

يمكنك تضمين 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)" كوجهة للإنشاء، ثم اختر المنتج->الأرشفة. بمجرد إنشاء الأرشيف، أنشئ توزيعًا موقعًا باستخدام ملف تعريف توزيع التطوير.

98d8eb042c36a685.png

b2e9ccff91d761c1.png

8e815564f64d2d39.png

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

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

قم بتوزيع تطبيقك على المختبرين

لتوزيع تطبيقك على المختبرين، قم بتحميل ملف IPA باستخدام وحدة تحكم Firebase:

  1. افتح صفحة توزيع التطبيق لوحدة تحكم Firebase. حدد مشروع Firebase الخاص بك عندما يُطلب منك ذلك.
  2. اضغط على البدء

e4671bd304ecfe47.png

  1. في صفحة الإصدارات، حدد التطبيق الذي تريد توزيعه من القائمة المنسدلة.

8a3da2939b9746f4.png

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

de63e3c3c64f909e.png

  1. انقر فوق توزيع لإتاحة الإصدار للمختبرين.

b6e75dc216fc3731.png

أضف نفسك كمختبر للإصدار

في وحدة تحكم Firebase، يمكنك الآن رؤية المختبرين الذين أضفتهم ضمن إصدار تطبيقك.

eb61c6be96ff3a11.png

نظرًا لأنك قمت بتضمين عنوان بريدك الإلكتروني، ستتلقى رسالة بريد إلكتروني من Firebase App Distribution تدعوك لاختبار التطبيق. أنت الآن المختبر الأول! تابع القسم أدناه للإعداد كمختبر على جهاز الاختبار الخاص بك.

سجل جهاز الاختبار الخاص بك

ستحتاج أولاً إلى تسجيل جهاز الاختبار الخاص بك لتنزيل الإصدار المخصص واختباره.

  1. على جهاز اختبار iOS الخاص بك، افتح البريد الإلكتروني المرسل من Firebase App Distribution وانقر على رابط البدء. تأكد من فتح الرابط في Safari.
  2. في تطبيق الويب الخاص باختبار Firebase App Distribution الذي يظهر، قم بتسجيل الدخول باستخدام حساب Google الخاص بك، ثم انقر فوق قبول الدعوة.

4d1af345ef944620.png

الآن، سترى الإصدار الذي تمت دعوتك إليه.

  1. انقر فوق تسجيل الجهاز لمشاركة UDID الخاص بك مع Firebase حتى تتمكن من تحديث ملف تعريف توفير التطبيق الخاص بك لاحقًا.

fd141215e54a938d.png

  1. اتبع التعليمات، وانتقل إلى الإعدادات لتنزيل ملف التعريف ومشاركة UDID الخاص بك.

الآن، عندما تعود إلى توزيع التطبيقات، يتم وضع علامة على الإصدار الآن على أنه "جهاز مسجل":

fe93d649dfa25877.png

تمت الآن مشاركة UDID الخاص بالمختبر مع المطور. الأمر متروك الآن للمطور لإنشاء نسخة جديدة من التطبيق للاختبار.

عرض معلومات المختبر في وحدة التحكم

مرة أخرى في عرض المطور في وحدة تحكم Firebase، سيظهر المُختبر كـ "مقبول" ضمن الإصدار:

1bef6f182c1c58f9.png

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

  1. لتصدير كافة معرفات UDID، افتح علامة التبويب "المختبرون والمجموعات".

2745d49a6abc47fe.png

  1. انقر على "تصدير معرفات Apple UDID".

cb45477f8cc436ba.png

يجب أن يحتوي الملف على UDID لجهاز الاختبار الخاص بك.

Device ID            Device Name                            Device Platform
1234567890     tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen        ios

عندما تتلقى إحدى رسائل البريد الإلكتروني هذه، قم بتحديث ملف تعريف التزويد الخاص بك باستخدام UDID وقم بتوزيع إصدار جديد على المختبرين لديك باتباع الخطوات التالية:

  1. أضف الأجهزة إلى بوابة مطور Apple الخاصة بك.
  • الخيار 1: استيراد معرفات UDID للجهاز كملف CSV. في علامة تبويب المختبرين والمجموعات في لوحة معلومات توزيع التطبيقات، حدد جميع المختبرين، ثم انقر فوق تصدير معرفات Apple UDIDs لتنزيل ملف CSV. بعد ذلك، قم باستيراد الملف إلى حساب مطور Apple الخاص بك باستخدام خيار تسجيل أجهزة متعددة. راجع وثائق Apple لمعرفة المزيد. لاحظ أن حساب مطور Apple الخاص بك قد يسمح لك فقط باستيراد عدد محدود من الأجهزة سنويًا.
  • الخيار 2: جمع وإدخال UDIDs عن طريق البريد الإلكتروني. في صفحة إضافة أجهزة في بوابة مطور Apple، قم بتسجيل UDID الجديد المحدد في البريد الإلكتروني الذي تلقيته.

ffb74294e68ee1c8.png

  1. قم بإضافة الأجهزة المسجلة إلى ملف تعريف التوفير الخاص بك.
  2. قم بتنزيل ملف تعريف التوفير واستخدمه لإعادة بناء تطبيقك. إذا كنت تقوم بإعادة البناء فقط لتحديث الأجهزة المسجلة، فلا تقم بتحديث رقم الإصدار أو الإصدار.
  3. أعد توزيع تطبيقك من وحدة تحكم Firebase أو واجهة سطر الأوامر (CLI). إذا كنت قد قمت بالفعل بتوزيع إصدار بنفس رقم الإصدار والإصدار، فإن مستخدمي الأجهزة المسجلة حديثًا فقط هم من يتلقون إشعارات عبر البريد الإلكتروني.

قم بتنزيل الإصدار من جهاز الاختبار

يحتوي الإصدار الآن على UDID الخاص بجهاز الاختبار، بحيث يمكن لجهاز الاختبار تنزيل التطبيق وتثبيته. يرسل App Distribution بريدًا إلكترونيًا إلى المختبرين عند إضافة UDID الخاص بهم إلى إصدار جديد.

a4049260bae2850b.png

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

عند الانتقال إلى تطبيق UDID codelab، يمكنك أن ترى أن الإصدار جاهز للتنزيل.

أبي6d03b6ad78746.png

  1. إذا كنت تستخدم جهازًا فعليًا، فاضغط على "تنزيل"، ثم قم بتثبيت التطبيق وتشغيله!
  2. عندما يبدأ التطبيق، سيطلب منك تمكين تنبيهات البناء الجديد. حدد "تشغيل"

6e3540a2900734e6.png

  1. بعد ذلك سيطلب منك تسجيل الدخول. انقر على "متابعة".

82d90d7935bfaea0.png

  1. قم بتسجيل الدخول باستخدام حساب الاختبار الخاص بك.

13bee1d03fa94ebf.png

  1. سيتم إعادتك إلى التطبيق. لن يتعين عليك تسجيل الدخول أو قبول التنبيهات في المرة القادمة التي تقوم فيها بتشغيل التطبيق.

815d6757eb5f6327.png

قم بتوزيع تحديث على المختبرين لديك

  1. قم بتحديث رقم الإصدار الخاص بك إلى "2".

861aa63ebbc6ec54.png

  1. حدد "أي جهاز يعمل بنظام iOS (arm64)" كوجهة للإنشاء، ثم حدد المنتج->الأرشفة. بمجرد إنشاء الأرشيف، أنشئ توزيعًا موقعًا باستخدام ملف تعريف توزيع التطوير.
  2. عند اكتمال الإنشاء، فإنه يحفظ ملف IPA وبعض ملفات السجل في المجلد الذي تحدده. قم بتحميل IPA الجديد هذا في وحدة تحكم Firebase الخاصة بك، وأضف بريدك الإلكتروني كمختبر مرة أخرى وقم بالتوزيع.

b6e75dc216fc3731.png

تنبيهات بناء الاختبار

  1. تأكد من إغلاق التطبيق إذا كان مفتوحًا. أعد تشغيل التطبيق.
  2. عند إعادة تشغيل التطبيق، من المفترض أن تتلقى تنبيهًا "يتوفر إصدار جديد".

3bd532992df458e6.png

  1. انقر فوق "تحديث" للحصول على أحدث إصدار.
  2. انقر فوق "تثبيت" في الشاشة التالية.

3a761d8fa4b79d33.png

  1. تهانينا! لقد تمكنت من تحديث تطبيقك باستخدام التنبيهات المضمنة.

6. تخصيص تسجيل دخول المختبر

تمنحك الطريقتان SignInTester/signOutTester و isTesterSignedIn مزيدًا من المرونة في تخصيص تجربة تسجيل دخول المختبر الخاص بك، حتى تتمكن من مطابقة شكل تطبيقك ومظهره بشكل أفضل.

يتحقق المثال التالي مما إذا كان المختبر قد قام بالفعل بتسجيل الدخول إلى حساب اختبار Firebase App Distribution، بحيث يمكنك اختيار عرض واجهة مستخدم تسجيل الدخول الخاصة بك فقط للمختبرين الذين لم يسجلوا الدخول بعد. بعد تسجيل دخول المختبر، يمكنك بعد ذلك اتصل بـ checkForUpdate للتحقق مما إذا كان لدى المُختبر حق الوصول إلى البنية الجديدة.

لنقم بتعطيل التحقق من التحديثات تلقائيًا في viewDidAppea r من خلال التعليق على استدعاء 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)
        }
      })
    }
  }

أخيرًا، دعونا نطبق طريقة isTesterSignedI n.

AppDistributionViewController.swift

 private func isTesterSignedIn() -> Bool {
    return AppDistribution.appDistribution().isTesterSignedIn
 }

بناء واختبار التنفيذ الخاص بك

7. تهانينا!

لقد قمت بإنشاء ميزة "عرض التنبيهات داخل التطبيق" في تطبيق يستخدم Firebase App Distribution iOS SDK.

ما قمنا بتغطيته

  • توزيع تطبيقات Firebase
  • توزيع تطبيق Firebase تنبيهات جديدة لنظام iOS SDK

الخطوات التالية

يتعلم أكثر

لدي سؤال؟

الإبلاغ عن المشكلات