แจ้งผู้ทดสอบเกี่ยวกับบิลด์ใหม่

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

ก่อนเริ่มต้น

เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้ทำ

ขั้นตอนที่ 1: เปิดใช้ App Distribution Tester API

  1. เลือกโปรเจ็กต์ใน Google Cloud Console

  2. คลิกเปิดใช้ในส่วน Firebase App Testers API

ขั้นตอนที่ 2: เพิ่ม App Distribution ลงในแอป

App Distribution Android SDK ประกอบด้วยไลบรารี 2 รายการต่อไปนี้

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

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

ประกาศทรัพยากร Dependency สำหรับ Android SDK ของ App Distribution ในโมดูล (ระดับแอป) ไฟล์ Gradle (ปกติ <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle). เพื่อหลีกเลี่ยงการรวม SDK แบบเต็ม ของการใช้งานการอัปเดตด้วยตนเอง ในเวอร์ชันของ Play เพิ่มทรัพยากร Dependency ของไลบรารีแบบ API เท่านั้นไปยัง สร้างตัวแปร เพิ่มการใช้งาน SDK เต็มรูปแบบลงในตัวแปรที่มีไว้เฉพาะเท่านั้น สำหรับการทดสอบก่อนเผยแพร่

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

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

หากกำลังมองหาโมดูลไลบรารีสำหรับ Kotlin โดยเฉพาะ เริ่มต้นด้วย รุ่นเดือนตุลาคม 2023, ทั้งนักพัฒนา Kotlin และ Java สามารถใช้โมดูลไลบรารีหลักได้ (โปรดดูรายละเอียดที่ คําถามที่พบบ่อยเกี่ยวกับโครงการริเริ่มนี้)

ขั้นตอนที่ 3: กำหนดค่าการแจ้งเตือนในแอป

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

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

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

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

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

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

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

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

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

    หากบิลด์ใหม่เป็น PacKage (APK) ของแอปพลิเคชัน Android 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.
    });
}

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

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

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

เข้าชม คู่มือการแก้ปัญหา App Distribution เพื่อรับความช่วยเหลือเกี่ยวกับปัญหาทั่วไป เช่น

  • ผู้ทดสอบไม่ได้รับการแจ้งเตือนในแอป
  • ผู้ทดสอบได้รับแจ้งให้ลงชื่อเข้าใช้ Google มากกว่า 1 ครั้ง