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


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

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

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

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

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

  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-beta18")

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

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

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

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

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

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

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

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

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

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

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

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

    หากบิลด์ใหม่เป็น Android Application PacKage (APK) SDK จะดาวน์โหลดบิลด์ใหม่ในเบื้องหลังและแจ้งให้ผู้ทดสอบติดตั้งเมื่อการดาวน์โหลดเสร็จสมบูรณ์ SDK จะส่งการแจ้งเตือนความคืบหน้าในการดาวน์โหลดไปยังผู้ใช้โดยใช้ NotificationManager นอกจากนี้ คุณยังเพิ่มตัวบ่งชี้ความคืบหน้าของคุณเองได้โดยแนบแฮนเดิลอร์ onProgressUpdate ลงใน Task updateIfNewReleaseAvailable

คุณสามารถเรียกใช้ updateIfNewReleaseAvailable ได้ทุกเมื่อในแอป เช่น คุณเรียกใช้ updateIfNewReleaseAvailable ได้ในระหว่างเมธอด onResume ของกิจกรรมหลักของแอป

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

Kotlin

// 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

// 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

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

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

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 ครั้ง