Opcjonalne pakiety SDK na Firebase App DistributioniOS i Androida umożliwiają wyświetlanie testerom alertów w aplikacji, gdy dostępne są nowe wersje aplikacji do zainstalowania. Z tego przewodnika dowiesz się, jak za pomocą pakietów SDK na iOS i AndroidaApp Distribution tworzyć i dostosowywać nowe alerty o kompilacji dla testerów.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na iOS.
Krok 1. Włącz interfejs App Distribution Tester API.
Wybierz projekt w Google Cloudkonsoli.
W sekcji Firebase App Testers API kliknij Włącz.
Krok 2. Dodaj do aplikacji element App Distribution
Otwórz plik Podfile utworzony na potrzeby projektu (lub uruchom polecenie
pod init
, aby utworzyć plik), a następnie dodaj ten wiersz w sekcji docelowej:pod 'FirebaseAppDistribution'
W katalogu pliku podfile uruchom polecenie
pod install
, a następnie otwórz utworzony plik.xcworkspace
.Zaimportuj moduł Firebase w strukturze
App
lubUIApplicationDelegate
:Swift
import FirebaseCore import FirebaseAppDistribution
Objective-C
@import FirebaseCore; @import FirebaseAppDistribution;
Skonfiguruj instancję współdzieloną
FirebaseApp
w 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 zamiana jest wyłączona, 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 udostępnia 2 sposoby konfigurowania alertów o kompilacji w aplikacji dla testerów: podstawową konfigurację alertów, która zawiera gotowe okna dialogowe aktualizacji aplikacji i logowania, oraz zaawansowaną konfigurację alertów, która umożliwia dostosowanie własnego interfejsu. Jeśli nie masz doświadczenia w korzystaniu z App Distributionpakietu SDK, zalecamy najpierw użycie podstawowej konfiguracji alertów.
Podstawowa konfiguracja
Użyj checkForUpdate
, aby wyświetlić gotowe okno dialogowe z prośbą o włączenie alertów testerom, którzy jeszcze tego nie zrobili, a następnie sprawdź, czy dostępna jest nowa kompilacja. Po wywołaniu metoda wykonuje następującą sekwencję:
Sprawdza, czy tester włączył alerty, prosząc go o zalogowanie się na App Distribution za pomocą konta Google.
Jeśli tester nie włączył jeszcze alertów, wyświetla się gotowe okno.
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, dopóki aplikacja nie zostanie odinstalowana lub nie zostanie wywołana metoda
signOutTester
. Więcej informacji znajdziesz w dokumentacji referencyjnej metody (Swift lub Objective-C).Sprawdza, czy są dostępne nowe wersje do zainstalowania przez testera.
Funkcję checkForUpdate()
możesz wywołać w dowolnym momencie w aplikacji. Możesz na przykład poprosić testerów o zainstalowanie nowo dostępnych wersji podczas uruchamiania aplikacji, umieszczając checkForUpdate()
w funkcji onAppear(perform:)
widoku głównego aplikacji.
W tym przykładzie sprawdzamy, czy tester ma włączone alerty i dostęp do nowej kompilacji. Jeśli tak, wyświetlamy okno dialogowe, gdy kompilacja jest dostępna do zainstalowania:
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
zapewniają większą elastyczność w dostosowywaniu sposobu logowania testerów, dzięki czemu lepiej pasują do wyglądu i stylu Twojej aplikacji.
Poniższy przykład sprawdza, czy tester zalogował się już na swoje Firebase App Distributionkonto testera, dzięki czemu możesz wyświetlać interfejs logowania tylko testerom, którzy jeszcze się nie zalogowali. Po zalogowaniu się testera możesz wywołać funkcję checkForUpdate()
, aby sprawdzić, czy ma on 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 signOutTester()
, znajdziesz w dokumentacji referencyjnej App Distribution dotyczącej Swifta i Objective-C.
Krok 4. Skompiluj i przetestuj wdrożenie
Na koniec skompiluj aplikację i przetestuj implementację, rozpowszechniając kompilację wśród testerów za pomocą konsoli Firebase.
Więcej informacji o rozwiązywaniu typowych problemów znajdziesz w App Distributionprzewodniku, np. na temat:
- Tester nie otrzymuje alertów w aplikacji
- Tester jest proszony o zalogowanie się w Google więcej niż raz