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

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

قبل ان تبدأ

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

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

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

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

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

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

  • firebase-appdistribution-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 الكامل إلى المتغيرات المخصصة حصريًا لاختبار ما قبل الإصدار:

Kotlin+KTX

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

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

Java

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

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

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

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

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

يتحقق المثال التالي مما إذا كان المختبر قد قام بالفعل بتسجيل الدخول إلى حساب مختبري توزيع التطبيقات. يتيح لك هذا اختيار عرض واجهة مستخدم تسجيل الدخول (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 أكثر من مرة