Opcjonalne p0/ pakiety SDK na iOS i Androida umożliwiają wyświetlanie testerom alertów w aplikacji, gdy dostępne są nowe wersje aplikacji do instalacji.Firebase App Distribution Z tego przewodnika dowiesz się, jak za pomocą pakietów SDK App Distribution na iOS i Androida tworzyć i dostosowywać alerty o nowych wersjach dla testerów.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, dodaj Firebase do projektu na iOS.
Krok 1. Włącz interfejs App Distribution Tester API
W konsoli Google Cloud wybierz swój projekt.
W sekcji Firebase App Testers API kliknij Włącz.
Krok 2. Dodaj App Distribution do aplikacji
Otwórz plik Podfile utworzony na potrzeby projektu (lub uruchom polecenie
pod init, aby go utworzyć), a następnie dodaj ten wiersz w sekcji target:pod 'FirebaseAppDistribution'
W katalogu pliku Podfile uruchom polecenie
pod install, a następnie otwórz utworzony plik.xcworkspace.Zaimportuj moduł Firebase w strukturze
ApplubUIApplicationDelegate:Swift
import FirebaseCore import FirebaseAppDistributionObjective-C
@import FirebaseCore; @import FirebaseAppDistribution;Skonfiguruj instancję współdzieloną
FirebaseAppw metodzieapplication(_:didFinishLaunchingWithOptions:)delegata aplikacji:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()Objective-C
// Use Firebase library to configure APIs [FIRApp configure];Jeśli swizzling jest wyłączony, przekaż wszystkie otwarte adresy URL do pakietu SDK App Distribution w implementacji
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; }Na koniec ponownie skompiluj aplikację.
Krok 3. Skonfiguruj alerty w aplikacji
Pakiet SDK App Distribution umożliwia skonfigurowanie alertów o nowych wersjach w aplikacji dla testerów na 2 sposoby: podstawową konfigurację alertów, która zawiera gotowe okna dialogowe aktualizacji aplikacji i logowania wyświetlane testerom, oraz zaawansowaną konfigurację alertów, która umożliwia dostosowanie własnego interfejsu użytkownika. Jeśli dopiero zaczynasz korzystać z pakietu SDK App Distribution App Distribution, zalecamy najpierw użycie podstawowej konfiguracji alertów.
Podstawowa konfiguracja
Użyj checkForUpdate, aby wyświetlić gotowe okno dialogowe włączania alertów testerom, którzy jeszcze nie włączyli alertów, a następnie sprawdzić, czy dostępna jest nowa wersja. Po wywołaniu metoda wykonuje te czynności:
Sprawdza, czy tester włączył alerty, wyświetlając prośbę o zalogowanie się w App Distribution za pomocą konta Google.
Jeśli tester nie włączył jeszcze alertów, wyświetla gotowe okno dialogowe.
Włączenie alertów to jednorazowy proces na urządzeniu testowym, który jest zachowywany po aktualizacjach aplikacji. Alerty pozostają włączone na urządzeniu testowym do momentu odinstalowania aplikacji lub wywołania przez nią metody
signOutTester. Więcej informacji znajdziesz w dokumentacji referencyjnej metody (Swift lub Objective-C) .Sprawdza, czy są dostępne nowe wersje, które tester może zainstalować.
Metodę checkForUpdate() możesz wywołać w dowolnym momencie w aplikacji. Możesz na przykład wyświetlać testerom prośbę o zainstalowanie nowo dostępnych wersji podczas uruchamiania aplikacji, umieszczając checkForUpdate() w onAppear(perform:) widoku głównego aplikacji.
Poniższy przykład sprawdza, czy tester włączył alerty i ma dostęp do nowej wersji. Jeśli tak, gdy wersja jest gotowa do zainstalowania, wyświetla się okno dialogowe:
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];
}
}];
Konfiguracja zaawansowana
Metody signInTester() i isTesterSignedIn dają większą elastyczność w dostosowywaniu logowania testera, dzięki czemu może ono lepiej pasować do wyglądu i działania aplikacji.
Poniższy przykład sprawdza, czy tester zalogował się już na swoje
Firebase App Distribution konto testera. Dzięki temu możesz wyświetlać interfejs
logowania tylko testerom, którzy jeszcze się nie zalogowali. Gdy tester się zaloguje, możesz wywołać metodę checkForUpdate(), aby sprawdzić, czy tester ma dostęp do nowej wersji.
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
}];
}
Więcej informacji o dodatkowych metodach, w tym o signOutTester(),
znajdziesz w App Distribution dokumentacji referencyjnej dla
Swift
i Objective-C.
Krok 4. Skompiluj i przetestuj implementację
Na koniec skompiluj aplikację i przetestuj implementację, rozpowszechniając kompilację wśród testerów za pomocą konsoli Firebase.
Więcej informacji o typowych problemach, takich jak:App Distribution
- tester nie otrzymuje alertów w aplikacji,
- tester jest proszony o zalogowanie się w Google więcej niż raz,