Firebase App Distribution SDK ของ iOS และ Android ที่ไม่บังคับช่วยให้คุณแสดง การแจ้งเตือนในแอปต่อผู้ทดสอบได้เมื่อมีบิลด์ใหม่ของแอปพร้อมให้ ติดตั้ง คำแนะนำนี้จะอธิบายวิธีใช้ App DistributionSDK ของ iOS และ Android เพื่อสร้างและปรับแต่งการแจ้งเตือนบิลด์ใหม่สำหรับผู้ทดสอบ
ก่อนเริ่มต้น
หากยังไม่ได้ดำเนินการ ให้เพิ่ม Firebase ลงในโปรเจ็กต์ Android
ขั้นตอนที่ 1: เปิดใช้ App Distribution Tester API
เลือกโปรเจ็กต์ในคอนโซล Google Cloud
คลิกเปิดใช้ในส่วน Firebase App Testers API
ขั้นตอนที่ 2: เพิ่ม App Distribution ลงในแอป
App Distribution Android SDK ประกอบด้วยไลบรารี 2 รายการ ได้แก่
firebase-appdistribution-api
- ไลบรารี API เท่านั้น ซึ่งคุณสามารถรวมไว้ ในตัวแปรบิลด์ทั้งหมดfirebase-appdistribution
- การใช้งาน SDK แบบเต็ม (ไม่บังคับ)
ไลบรารี API เท่านั้นช่วยให้โค้ดของคุณเรียกใช้ SDK ได้ การเรียกใช้จะไม่มีผลหากไม่มีการติดตั้งใช้งาน SDK แบบเต็ม
ประกาศทรัพยากร Dependency สำหรับ App Distribution Android SDK ในไฟล์ 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-beta16")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta16")
}
หากกำลังมองหาโมดูลไลบรารีเฉพาะของ Kotlin ตั้งแต่รุ่นเดือนตุลาคม 2023 เป็นต้นไป ทั้งนักพัฒนาแอป Kotlin และ Java จะใช้โมดูลไลบรารีหลักได้ (ดูรายละเอียดได้ที่คำถามที่พบบ่อยเกี่ยวกับโครงการนี้)
ขั้นตอนที่ 3: กำหนดค่าการแจ้งเตือนในแอป
App Distribution Android SDK มีวิธีต่อไปนี้ในการตั้งค่า การแจ้งเตือนบิลด์ในแอปสำหรับผู้ทดสอบ
- การกำหนดค่าการแจ้งเตือนพื้นฐานที่มาพร้อมกับการอัปเดตแอปที่สร้างไว้ล่วงหน้า และกล่องโต้ตอบการลงชื่อเข้าใช้เพื่อแสดงต่อผู้ทดสอบ
- การกำหนดค่าการแจ้งเตือนขั้นสูงที่ช่วยให้คุณปรับแต่งอินเทอร์เฟซผู้ใช้ของคุณเองได้
หากใช้ App Distribution Android SDK เป็นครั้งแรก เราขอแนะนำให้ใช้การกำหนดค่าพื้นฐาน
การกำหนดค่าพื้นฐาน
ใช้ updateIfNewReleaseAvailable
เพื่อแสดงกล่องโต้ตอบเปิดใช้การแจ้งเตือนที่สร้างไว้ล่วงหน้า
ต่อผู้ทดสอบที่ยังไม่ได้เปิดใช้การแจ้งเตือน จากนั้นตรวจสอบว่ามีบิลด์ใหม่
พร้อมใช้งานหรือไม่ เมื่อเรียกใช้ เมธอดจะดำเนินการตามลำดับต่อไปนี้
ตรวจสอบว่าผู้ทดสอบได้เปิดใช้การแจ้งเตือนหรือไม่ หากผู้ทดสอบยังไม่ได้เปิดใช้การแจ้งเตือน วิธีนี้จะแจ้งให้ผู้ทดสอบลงชื่อเข้าใช้ App Distribution ด้วยบัญชี Google
ตรวจสอบบิลด์ใหม่ที่พร้อมให้ผู้ทดสอบติดตั้ง
แสดงการแจ้งเตือนที่สร้างไว้ล่วงหน้าซึ่งแจ้งให้ผู้ทดสอบอัปเดต
หากบิลด์ใหม่เป็น Android App Bundle (AAB) ระบบจะเปลี่ยนเส้นทางผู้ทดสอบไปยัง Google Play เพื่อดำเนินการอัปเดตให้เสร็จสมบูรณ์
หากบิลด์ใหม่เป็น Android Application PacKage (APK) SDK จะดาวน์โหลดบิลด์ใหม่ในเบื้องหลังและแจ้งให้ผู้ทดสอบติดตั้งเมื่อดาวน์โหลดเสร็จสมบูรณ์ SDK จะส่งการแจ้งเตือนความคืบหน้าในการดาวน์โหลด ไปยังผู้ใช้โดยใช้
NotificationManager
นอกจากนี้ คุณยังเพิ่มตัวบ่งชี้ความคืบหน้าของคุณเองได้โดยแนบแฮนเดิลonProgressUpdate
ไปยัง TaskupdateIfNewReleaseAvailable
คุณเรียกใช้ 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 ครั้ง