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

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

قبل ان تبدأ

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

الخطوة 1 : تفعيل App Distribution Tester API

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

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

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

يتكون تطبيق Android SDK لتوزيع التطبيقات من مكتبتين:

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

تتيح مكتبة واجهة برمجة التطبيقات (API) فقط للكود الخاص بك إجراء مكالمات إلى SDK. لن يكون للمكالمات أي تأثير إذا لم يكن تطبيق SDK الكامل موجودًا.

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

Java

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api:16.0.0-beta03'

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

Kotlin+KTX

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta03'

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

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

يوفر تطبيق 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 للنشاط الرئيسي للتطبيق.

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

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;
        }
      }
    });

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.
          }
        }
      }
    }

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

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

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

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

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.
    });
}

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.
    }
}

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

Java

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

Kotlin+KTX

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

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

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

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

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

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.
});

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.
}

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

Java

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

Kotlin+KTX

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

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

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

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

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