أبلغ المختبرين عن البنيات الجديدة

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

قبل ان تبدأ

إذا لم تكن قد قمت بذلك بالفعل، فأضف Firebase إلى مشروع Android الخاص بك .

الخطوة 1 : تمكين واجهة برمجة تطبيقات اختبار توزيع التطبيقات

  1. حدد مشروعك في وحدة تحكم Google Cloud .

  2. ضمن Firebase App Testers API، انقر على تمكين .

الخطوة 2 : إضافة توزيع التطبيق إلى التطبيق الخاص بك

يتكون App Distribution Android SDK من مكتبتين:

  • firebase-appdistribution-api - مكتبة API فقط، والتي يمكنك تضمينها في جميع متغيرات البناء .
  • firebase-appdistribution - تطبيق SDK الكامل (اختياري).

تتيح مكتبة API فقط للتعليمات البرمجية الخاصة بك إجراء مكالمات إلى SDK. لن يكون للاستدعاءات أي تأثير في حالة عدم وجود تطبيق SDK الكامل.

قم بتعريف تبعية App Distribution Android SDK في ملف Gradle الخاص بالوحدة النمطية (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle ). لتجنب تضمين وظيفة التحديث الذاتي لتطبيق SDK الكامل في إصدارات Play الخاصة بك، قم بإضافة تبعية مكتبة API فقط إلى جميع متغيرات البناء . قم فقط بإضافة تطبيق SDK الكامل إلى المتغيرات المخصصة حصريًا لاختبار الإصدار المسبق.

dependencies {
    // ADD the API-only library to all variants
    implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta12")

    // ADD the full SDK implementation to the "beta" variant only (example)
    betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta12")
}

هل تبحث عن وحدة مكتبة خاصة بـ Kotlin؟ بدءًا من إصدار أكتوبر 2023 ، يمكن لمطوري Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (لمزيد من التفاصيل، راجع الأسئلة الشائعة حول هذه المبادرة ).

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

يوفر App Distribution Android SDK الطرق التالية لإعداد تنبيهات البناء داخل التطبيق للمختبرين:

  • تكوين تنبيه أساسي يأتي مع تحديث التطبيق المضمن مسبقًا ومربعات حوار تسجيل الدخول لعرضها على المختبرين.
  • تكوين تنبيه متقدم يسمح لك بتخصيص واجهة المستخدم الخاصة بك.

إذا كنت تستخدم App Distribution Android SDK لأول مرة، فنوصي باستخدام التكوين الأساسي .

التكوين الأساسي

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

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

  2. التحقق من الإصدارات المتوفرة حديثًا لكي يقوم المُختبر بتثبيتها.

  3. يعرض تنبيهًا مُعدًا مسبقًا يطالب المُختبر بالتحديث.

  4. إذا كان الإصدار الجديد عبارة عن حزمة تطبيقات Android (AAB)، فسيُعيد توجيه المُختبر إلى Google Play لإكمال عملية التحديث.

    إذا كان الإصدار الجديد عبارة عن تطبيق Android PacKage (APK)، فإن SDK يقوم بتنزيل الإصدار الجديد في الخلفية ويطلب من المُختبر التثبيت عند اكتمال التنزيل. يرسل SDK إشعارات تقدم التنزيل إلى المستخدم باستخدام NotificationManager . يمكنك أيضًا إضافة مؤشر التقدم الخاص بك عن طريق إرفاق معالج onProgressUpdate بمهمة updateIfNewReleaseAvailable .

يمكنك استدعاء updateIfNewReleaseAvailable في أي وقت في تطبيقك. على سبيل المثال، يمكنك استدعاء updateIfNewReleaseAvailable أثناء طريقة onResume للنشاط الرئيسي للتطبيق.

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

Kotlin+KTX

// Copy and paste this into any part of your app - for example, in your main
// activity's onResume method.
val firebaseAppDistribution = FirebaseAppDistribution.getInstance()
firebaseAppDistribution.updateIfNewReleaseAvailable()
    .addOnProgressListener { updateProgress ->
      // (Optional) Implement custom progress updates in addition to
      // automatic NotificationManager updates.
    }
    .addOnFailureListener { e ->
      // (Optional) Handle errors.
      if (e is FirebaseAppDistributionException) {
        when (e.errorCode) {
          Status.NOT_IMPLEMENTED -> {
            // SDK did nothing. This is expected when building for Play.
          }
          else -> {
            // Handle other errors.
          }
        }
      }
    }

Java

// Copy and paste this into any part of your app - for example, in your main
// activity's onResume method.
FirebaseAppDistribution firebaseAppDistribution = FirebaseAppDistribution.getInstance();
firebaseAppDistribution.updateIfNewReleaseAvailable()
    .addOnProgressListener(updateProgress -> {
      // (Optional) Implement custom progress updates in addition to
      // automatic NotificationManager updates.
    })
    .addOnFailureListener(e -> {
      // (Optional) Handle errors.
      if (e instanceof FirebaseAppDistributionException) {
        switch (((FirebaseAppDistributionException)e).getErrorCode()) {
          case NOT_IMPLEMENTED:
            // SDK did nothing. This is expected when building for Play.
            break;
          default:
            // Handle other errors.
            break;
        }
      }
    });

التكوين المتقدم

التكوين المتقدم لتسجيل الدخول

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

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

Kotlin+KTX

// Only show sign-in UI if this is the "beta" variant (example).
if (BuildConfig.BUILD_TYPE == "beta" && !firebaseAppDistribution.isTesterSignedIn) {
    // Start your sign-in UI here.
}

// Only check for updates if the tester is already signed in (do not prompt).
if (firebaseAppDistribution.isTesterSignedIn) {
    firebaseAppDistribution.updateIfNewReleaseAvailable().addOnFailureListener {
        // Handle failed update.
    }
}

Java

// Only show sign-in UI if this is the "beta" variant (example).
if (BuildConfig.BUILD_TYPE == "beta" && !firebaseAppDistribution.isTesterSignedIn()) {
    // Start your sign-in UI here.
}

// Only check for updates if the tester is already signed in (do not prompt).
if (firebaseAppDistribution.isTesterSignedIn()) {
    firebaseAppDistribution.updateIfNewReleaseAvailable().addOnFailureListener( e -> {
        // Handle failed update.
    });
}

من واجهة مستخدم تسجيل الدخول، عندما يختار المُختبر المتابعة، اتصل بـ signInTester() :

Kotlin+KTX

firebaseAppDistribution.signInTester().addOnSuccessListener {
  // Handle successful sign-in.
}.addOnFailureListener {
  // Handle failed sign-in.
});

Java

firebaseAppDistribution.signInTester().addOnSuccessListener( unused -> {
  // Handle successful sign-in.
}).addOnFailureListener(e -> {
  // Handle failed sign-in.
});

تكوين التحديث المتقدم

تمنحك الطريقتان checkForNewRelease و updateApp المزيد من المرونة للتخصيص عندما يُطلب من المختبر الخاص بك التحديث. يمكنك أيضًا تخصيص مربع حوار التحديث المُعد مسبقًا ومؤشر تقدم التنزيل حتى يتمكنوا من مطابقة شكل تطبيقك ومظهره بشكل أفضل.

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

يتحقق المثال التالي من توفر إصدار جديد ثم يعرض واجهة مستخدم مخصصة. قبل الاتصال بـ checkForNewRelease و updateApp ، تأكد من تسجيل دخول المُختبر باستخدام تكوين تسجيل الدخول المتقدم .

Kotlin+KTX

firebaseAppDistribution.checkForNewRelease().addOnSuccessListener { release ->
    if (release != null) {
        // New release available. Start your update UI here.
    }
}.addOnFailureListener {
    // Handle failed check for new release. Fails with Status#NOT_IMPLEMENTED
    // if built for Play.
}

Java

firebaseAppDistribution.checkForNewRelease().addOnSuccessListener(release -> {
    if (release != null) {
        // New release available. Start your update UI here.
    }
}).addOnFailureListener(e -> {
    // Handle failed check for new release. Fails with Status#NOT_IMPLEMENTED
    // if built for Play.
});

عندما يختار المُختبر متابعة التحديث من واجهة مستخدم التحديث الخاصة بك، اتصل بـ updateApp() :

Kotlin+KTX

firebaseAppDistribution.updateApp()
    .addOnProgressListener { updateState ->
      // Use updateState to show update progress.
    }

Java

firebaseAppDistribution.updateApp()
    .addOnProgressListener(updateState -> {
      // Use updateState to show update progress.
    });

الخطوة 4 : بناء واختبار التنفيذ الخاص بك

أنشئ تطبيقك واختبر تنفيذك من خلال توزيع الإصدار على المختبرين باستخدام وحدة تحكم Firebase.

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

  • لا يتلقى المختبر تنبيهات داخل التطبيق
  • تتم مطالبة المختبر بتسجيل الدخول إلى Google أكثر من مرة