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