可選的 Firebase App Distribution iOS 和 Android SDK 可讓您在應用程式的新版本可供安裝時向測試人員顯示應用程式內警報。本指南介紹如何使用 App Distribution iOS 和 Android SDK 為測試人員建立和自訂新的建置警報。
在你開始之前
如果您尚未將 Firebase 新增至您的 iOS 專案中,請將其新增至您的 iOS 專案。
步驟 1 :啟用 App Distribution Tester API
在Google Cloud Console中選擇您的項目。
在Firebase App Testers API下,按一下啟用。
第 2 步:將應用程式分發添加到您的應用程式
開啟您為專案建立的 Podfile(或執行
pod init
建立一個),然後在目標部分中新增以下行:pod 'FirebaseAppDistribution'
在 podfile 的目錄中,執行
pod install
,然後開啟建立的.xcworkspace
檔。在您的
App
架構或UIApplicationDelegate
中匯入 Firebase 模組:迅速
import FirebaseCore import FirebaseAppDistribution
Objective-C
@import FirebaseCore; @import FirebaseAppDistribution;
在應用程式委託的
application(_:didFinishLaunchingWithOptions:)
方法中設定FirebaseApp
共享實例:迅速
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
如果停用調配,請將所有開啟的 URL 傳遞到
application(_:open:options:)
實作中的 App Distribution SDK:迅速
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 提供了兩種為測試人員設定應用內建置警報的方法:基本警報配置(附帶預先建置的應用程式更新和登入對話方塊以向測試人員顯示)和進階警報配置(允許您可以自訂自己的使用者介面。如果您是 App Distribution SDK 的新手,我們建議您先使用基本警報配置。
基本配置
使用checkForUpdate
向尚未啟用警報的測試人員顯示預先建置的啟用警報對話框,然後檢查新版本是否可用。呼叫時,該方法會執行下列序列:
透過提示測試人員使用其 Google 帳戶登入 App Distribution 來檢查測試人員是否啟用了警報。
如果測試儀尚未啟用警報,則顯示預先建置的對話方塊。
啟用警報是測試設備上的一次性過程,並且在應用程式更新期間持續存在。警報在測試設備上保持啟用狀態,直到卸載應用程式或呼叫
signOutTester
方法。有關更多信息,請參閱該方法的參考文檔( Swift或Objective-C )。檢查是否有新的可用版本供測試人員安裝。
您可以在應用程式中的任何位置呼叫checkForUpdate()
。例如,您可以透過在應用程式根視圖的onAppear(perform:)
中包含checkForUpdate()
來提示測試人員在啟動時安裝新的可用版本。
以下範例檢查測試人員是否已啟用警報並有權存取新版本,如果是,則在該版本可供安裝時顯示對話方塊:
迅速
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()
檢查測試人員是否有權存取新版本。
迅速
// 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()
的信息,請參閱Swift和Objective-C的 App Distribution 參考文件。
第 4 步:建立並測試您的實施
最後,建立您的應用程式並透過使用 Firebase 控制台將建置分發給測試人員來測試您的實作。
請造訪應用程式分發故障排除指南以取得常見問題的協助,例如:
- 測試人員未收到應用程式內警報
- 測試人員曾多次被提示登入 Google