Firebase App Distribution SDK ของ iOS และ Android (ไม่บังคับ) ช่วยให้คุณแสดงการแจ้งเตือนในแอปต่อผู้ทดสอบได้เมื่อบิลด์ใหม่ของแอปพร้อมให้ติดตั้ง คู่มือนี้จะอธิบายวิธีใช้ App Distribution SDK สำหรับ iOS และ Android เพื่อสร้างและปรับแต่งการแจ้งเตือนบิลด์ใหม่สำหรับผู้ทดสอบ
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ iOS หากยังไม่ได้ดำเนินการ
ขั้นตอนที่ 1: เปิดใช้ App Distribution Tester API
เลือกโปรเจ็กต์ใน คอนโซล Google Cloud
ในส่วน Firebase App Testers API ให้คลิกเปิดใช้
ขั้นตอนที่ 2: เพิ่ม App Distribution ลงในแอป
เปิด Podfile ที่คุณสร้างสำหรับโปรเจ็กต์ (หรือเรียกใช้
pod init
เพื่อสร้าง) จากนั้นเพิ่มบรรทัดต่อไปนี้ในส่วนเป้าหมายpod 'FirebaseAppDistribution'
ในไดเรกทอรีของ podfile ให้เรียกใช้
pod install
แล้วเปิดไฟล์.xcworkspace
ที่สร้างขึ้นนำเข้าโมดูล Firebase ในโครงสร้าง
App
หรือUIApplicationDelegate
ดังนี้Swift
import FirebaseCore import FirebaseAppDistribution
Objective-C
@import FirebaseCore; @import FirebaseAppDistribution;
กำหนดค่า
FirebaseApp
อินสแตนซ์ที่แชร์ในเมธอดapplication(_:didFinishLaunchingWithOptions:)
ของตัวแทนแอปSwift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
หากปิดใช้การสลับ ให้ส่ง URL ที่เปิดอยู่ไปยัง App Distribution SDK ในการใช้งาน
application(_:open:options:)
ดังนี้Swift
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { if AppDistribution.appDistribution().application(application, open: url, options: options) { return true } // Handle other non-Firebase URLs here. return false }
Objective-C
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options { if ([[FIRAppDistribution appDistribution] application:app openURL:url options:options]) { return YES; } // Handle other non-Firebase URLs here. return NO; }
สุดท้าย ให้คอมไพล์แอปอีกครั้ง
ขั้นตอนที่ 3: กำหนดค่าการแจ้งเตือนในแอป
App Distribution SDK มี 2 วิธีในการตั้งค่าการแจ้งเตือนเกี่ยวกับบิลด์ในแอปสำหรับผู้ทดสอบ ได้แก่ การกําหนดค่าการแจ้งเตือนพื้นฐาน ซึ่งมาพร้อมกับการอัปเดตแอปที่สร้างไว้ล่วงหน้าและกล่องโต้ตอบการลงชื่อเข้าใช้เพื่อแสดงต่อผู้ทดสอบ และการกําหนดค่าการแจ้งเตือนขั้นสูง ซึ่งช่วยให้คุณปรับแต่งอินเทอร์เฟซผู้ใช้ของคุณเองได้ เราขอแนะนำให้ใช้การกำหนดค่าการแจ้งเตือนพื้นฐานก่อน หากคุณเพิ่งเริ่มใช้ App Distribution SDK
การกำหนดค่าพื้นฐาน
ใช้ checkForUpdate
เพื่อแสดงกล่องโต้ตอบเปิดใช้การแจ้งเตือนที่สร้างไว้ล่วงหน้าต่อผู้ทดสอบที่ยังไม่ได้เปิดใช้การแจ้งเตือน จากนั้นตรวจสอบว่ามีบิลด์ใหม่หรือไม่ เมื่อเรียกใช้ เมธอดจะออกลำดับต่อไปนี้
ตรวจสอบว่าผู้ทดสอบเปิดใช้การแจ้งเตือนหรือไม่โดยแจ้งให้ลงชื่อเข้าใช้ App Distribution ด้วยบัญชี Google
หากผู้ทดสอบยังไม่ได้เปิดใช้การแจ้งเตือน ระบบจะแสดงกล่องโต้ตอบที่กำหนดไว้ล่วงหน้า
การเปิดใช้การแจ้งเตือนเป็นกระบวนการแบบครั้งเดียวในอุปกรณ์ทดสอบและจะยังคงอยู่ตลอดการอัปเดตแอป การแจ้งเตือนจะยังคงเปิดใช้ในอุปกรณ์ทดสอบจนกว่าจะมีการถอนการติดตั้งแอปหรือเรียกใช้เมธอด
signOutTester
ดูเอกสารอ้างอิงของเมธอด (เร็ว หรือ Objective-C) เพื่อดูข้อมูลเพิ่มเติมตรวจสอบบิลด์ที่เพิ่งพร้อมใช้งานเพื่อให้ผู้ทดสอบติดตั้ง
คุณสามารถเรียกใช้ checkForUpdate()
ได้ทุกเมื่อในแอป เช่น คุณสามารถแจ้งให้ผู้ทดสอบติดตั้งบิลด์ที่พร้อมใช้งานใหม่เมื่อเริ่มต้นระบบได้โดยใส่ checkForUpdate()
ใน onAppear(perform:)
ของมุมมองรูทของแอป
ตัวอย่างต่อไปนี้จะตรวจสอบว่าผู้ทดสอบเปิดใช้การแจ้งเตือนหรือไม่ และมีสิทธิ์เข้าถึงบิลด์ใหม่ ถ้าใช่ จะแสดงกล่องโต้ตอบเมื่อ บิลด์ที่พร้อมให้ติดตั้ง:
Swift
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
if error != nil {
// Handle error
return
}
guard let release = release else {
return
}
// Customize your alerts here.
let title = "New Version Available"
let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
let uialert = UIAlertController(title: title,message: message, preferredStyle: .alert)
uialert.addAction(UIAlertAction(title: "Update", style: UIAlertAction.Style.default) {
_ in
UIApplication.shared.open(release.downloadURL)
})
uialert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel) {
_ in
})
// self should be a UIViewController.
self.present(uialert, animated: true, completion: nil)
})
Objective-C
[[FIRAppDistribution appDistribution]
checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
NSError *_Nullable error) {
if (error) {
// Handle error
return;
}
if (release) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"New Version Available"
message:[NSString stringWithFormat:@"Version %@ (%@) is available.", release.displayVersion,
release.buildVersion] preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *updateAction = [UIAlertAction actionWithTitle:@"Update"
style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[[UIApplication sharedApplication] openURL:release.downloadURL options:@{}
completionHandler:nil];
}];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {}];
[alert addAction:updateAction];
[alert addAction:cancelAction];
[self presentViewController:alert animated:YES completion:nil];
}
}];
การกำหนดค่าขั้นสูง
เมธอด signInTester()
และ isTesterSignedIn
ให้คุณมีความยืดหยุ่นมากขึ้น
ปรับแต่งประสบการณ์การลงชื่อเข้าใช้ของผู้ทดสอบ เพื่อให้จับคู่กับ
รูปลักษณ์ของแอป
ตัวอย่างต่อไปนี้จะตรวจสอบว่าผู้ทดสอบได้ลงชื่อเข้าใช้แล้วหรือยัง
Firebase App Distribution บัญชีผู้ทดสอบ ดังนั้นคุณสามารถเลือกที่จะแสดง
UI การลงชื่อเข้าใช้เฉพาะสำหรับผู้ทดสอบที่ยังไม่ได้ลงชื่อเข้าใช้เท่านั้น หลังจากผู้ทดสอบลงชื่อเข้าใช้แล้ว คุณสามารถโทรไปที่ checkForUpdate()
เพื่อตรวจสอบว่าผู้ทดสอบมีสิทธิ์เข้าถึงบิลด์ใหม่หรือไม่
Swift
// Sign in a tester without automatically checking for update
if (!AppDistribution.appDistribution().isTesterSignedIn) {
AppDistribution.appDistribution().signInTester (completion: { error in
// completion block for signInTester
if (error != nil) {
// handle failed sign in
return
}
// handle successful sign in
})
}
// Only check for update if tester is already signed in - do not prompt
if (AppDistribution.appDistribution().isTesterSignedIn) {
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
// completion block for check for update
})
}
Objective-C
// Sign in a tester without automatically checking for update
if(![[FIRAppDistribution appDistribution] isTesterSignedIn]) {
[[FIRAppDistribution appDistribution]
signInTesterWithCompletion:^(NSError *_Nullable error) {
// completion block for signInTester
if (error) {
// handle failed sign in
return;
}
// handle successful sign in
}];
}
// only check for update if tester is already signed in - do not prompt
if([[FIRAppDistribution appDistribution] isTesterSignedIn]) {
[[FIRAppDistribution appDistribution]
checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
NSError *_Nullable error) {
// completion block for check for update
}];
}
ดูข้อมูลเกี่ยวกับวิธีการอื่นๆ รวมถึง signOutTester()
ได้ที่เอกสารอ้างอิง App Distribution สำหรับ Swift และ Objective-C
ขั้นตอนที่ 4: สร้างและทดสอบการใช้งาน
สุดท้าย ให้สร้างแอปและทดสอบการใช้งานโดย เพื่อแจกจ่ายงานสร้าง แก่ผู้ทดสอบโดยใช้คอนโซล Firebase
เข้าชม คู่มือการแก้ปัญหา App Distribution เพื่อรับความช่วยเหลือเกี่ยวกับปัญหาทั่วไป เช่น
- ผู้ทดสอบไม่ได้รับการแจ้งเตือนในแอป
- ผู้ทดสอบได้รับแจ้งให้ลงชื่อเข้าใช้ Google มากกว่า 1 ครั้ง