แจ้งผู้ทดสอบเกี่ยวกับงานสร้างใหม่

ตัวเลือก 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 : เพิ่มการแจกจ่ายแอปไปยังแอปของคุณ

App Distribution Android SDK ประกอบด้วยสองไลบรารี:

  • firebase-appdistribution-api - ไลบรารี API เท่านั้น ซึ่งคุณสามารถรวมไว้ใน เวอร์ชัน บิลด์ทั้งหมดได้
  • firebase-appdistribution - การใช้งาน SDK แบบเต็ม (ตัวเลือก)

ไลบรารี API เท่านั้นช่วยให้โค้ดของคุณเรียกใช้ SDK ได้ การเรียกจะไม่มีผลหากไม่มีการใช้งาน SDK แบบเต็ม

ประกาศการพึ่งพาสำหรับ App Distribution Android SDK ใน โมดูลของคุณ (ระดับแอป) ไฟล์ Gradle (โดยปกติคือ app/build.gradle ) เพื่อหลีกเลี่ยงการรวมฟังก์ชันการอัปเดตตัวเองของการนำ SDK ไปใช้อย่างเต็มรูปแบบใน Play builds ของคุณ ให้เพิ่มการพึ่งพาไลบรารี 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 : กำหนดค่าการแจ้งเตือนในแอป

App Distribution Android SDK มีวิธีต่อไปนี้ในการตั้งค่าการแจ้งเตือนบิลด์ในแอปสำหรับผู้ทดสอบของคุณ:

  • การกำหนดค่าการแจ้งเตือนพื้นฐานที่มาพร้อมกับการอัปเดตแอปที่สร้างไว้ล่วงหน้าและกล่องโต้ตอบการลงชื่อเข้าใช้เพื่อแสดงต่อผู้ทดสอบ
  • การกำหนดค่าการแจ้งเตือนขั้นสูงที่ให้คุณปรับแต่งส่วนต่อประสานผู้ใช้ของคุณเอง

หากคุณใช้ App Distribution Android SDK เป็นครั้งแรก เราขอแนะนำให้ใช้การ กำหนดค่าพื้นฐาน

การกำหนดค่าพื้นฐาน

ใช้ updateIfNewReleaseAvailable เพื่อแสดงกล่องโต้ตอบเปิดใช้งานการแจ้งเตือนที่สร้างไว้ล่วงหน้าสำหรับผู้ทดสอบที่ยังไม่ได้เปิดใช้งานการแจ้งเตือน จากนั้นตรวจสอบว่ามีบิลด์ใหม่หรือไม่ เมื่อเรียก เมธอดจะกำหนดลำดับต่อไปนี้:

  1. ตรวจสอบว่าผู้ทดสอบได้เปิดใช้งานการแจ้งเตือนหรือไม่ หากผู้ทดสอบยังไม่ได้เปิดใช้งานการแจ้งเตือน เมธอดจะแจ้งให้ผู้ทดสอบลงชื่อเข้าใช้ App Distribution ด้วยบัญชี Google

  2. ตรวจสอบบิลด์ที่พร้อมใช้งานใหม่สำหรับผู้ทดสอบที่จะติดตั้ง

  3. แสดงการแจ้งเตือนที่สร้างไว้ล่วงหน้าพร้อมท์ให้ผู้ทดสอบอัปเดต

  4. หากบิลด์ใหม่เป็น Android App Bundle (AAB) ให้เปลี่ยนเส้นทางผู้ทดสอบไปที่ Google Play เพื่อดำเนินการอัปเดตให้เสร็จสิ้น

    หากบิลด์ใหม่เป็นแอปพลิเคชัน Android PackKage (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 ให้คุณปรับแต่งประสบการณ์การลงชื่อเข้าใช้ของผู้ทดสอบได้อย่างยืดหยุ่นมากขึ้น เพื่อให้ประสบการณ์ของผู้ทดสอบตรงกับรูปลักษณ์ของแอปของคุณมากขึ้น

ตัวอย่างต่อไปนี้ตรวจสอบว่าผู้ทดสอบได้ลงชื่อเข้าใช้บัญชีผู้ทดสอบ App Distribution แล้วหรือไม่ วิธีนี้ช่วยให้คุณเลือกแสดงส่วนต่อประสานผู้ใช้ในการลงชื่อเข้าใช้ (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.
    }
}

จาก UI การลงชื่อเข้าใช้ของคุณ เมื่อผู้ทดสอบเลือกที่จะดำเนินการต่อ ให้เรียก 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 แสดงสถานะในแอปบางประเภท หรือวิธีการอื่นๆ

ตัวอย่างต่อไปนี้จะตรวจสอบว่ามีรุ่นใหม่หรือไม่ จากนั้นแสดง UI ที่กำหนดเอง ก่อนเรียก 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.
}

เมื่อผู้ทดสอบเลือกที่จะดำเนินการอัปเดตต่อจาก UI การอัปเดตของคุณ ให้เรียก 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 มากกว่าหนึ่งครั้ง