SDK สำหรับ iOS และ Android Firebase App Distribution ที่ไม่บังคับให้คุณแสดง การแจ้งเตือนในแอปถึงผู้ทดสอบเมื่อแอปเวอร์ชันใหม่พร้อมใช้งานสำหรับ ติดตั้ง คำแนะนำนี้จะอธิบายวิธีใช้ App Distribution SDK สำหรับ iOS และ Android เพื่อสร้างและปรับแต่งการแจ้งเตือนบิลด์ใหม่สำหรับผู้ทดสอบ
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้ทำ
ขั้นตอนที่ 1: เปิดใช้ App Distribution Tester API
เลือกโปรเจ็กต์ใน คอนโซล Google Cloud
คลิกเปิดใช้ในส่วน Firebase App Testers API
ขั้นตอนที่ 2: เพิ่ม App Distribution ลงในแอป
Android SDK App Distribution ประกอบด้วยไลบรารี 2 รายการต่อไปนี้
firebase-appdistribution-api
- ไลบรารีแบบ API เท่านั้น ซึ่งคุณจะใส่ได้ ในตัวแปรของบิลด์ทั้งหมดfirebase-appdistribution
- การใช้งาน SDK เต็มรูปแบบ (ไม่บังคับ)
ไลบรารีแบบ API เท่านั้นจะทำให้โค้ดของคุณเรียก SDK ได้ การโทรจะมี ไม่มีผลหากไม่มีการใช้งาน SDK เต็มรูปแบบ
ประกาศการพึ่งพาสำหรับ 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
เพื่อแสดงการแจ้งเตือนการเปิดใช้ที่สร้างไว้ล่วงหน้า
ของผู้ทดสอบที่ยังไม่ได้เปิดใช้การแจ้งเตือนไว้ จากนั้นตรวจสอบว่า
พร้อมใช้งาน เมื่อเรียกใช้ เมธอดจะออกลำดับต่อไปนี้
ตรวจสอบว่าผู้ทดสอบเปิดใช้การแจ้งเตือนไว้หรือไม่ หากผู้ทดสอบยังไม่ได้เปิดใช้ เมธอดจะแจ้งให้ผู้ทดสอบลงชื่อเข้าใช้ App Distribution ด้วย บัญชี Google ของตน
ตรวจสอบบิลด์ที่เพิ่งพร้อมใช้งานเพื่อให้ผู้ทดสอบติดตั้ง
แสดงการแจ้งเตือนที่สร้างไว้ล่วงหน้าเพื่อบอกให้ผู้ทดสอบอัปเดต
หากบิลด์ใหม่เป็น 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 ครั้ง