Opcjonalne pakiety SDK dla iOS i Androida (Firebase App Distribution) umożliwiają wyświetlanie testerom alertów w aplikacji, gdy nowe wersje aplikacji staną się dostępne do zainstalowania. Z tego przewodnika dowiesz się, jak korzystać z pakietów SDK App Distribution na iOS i Androida, aby tworzyć i dostosowywać alerty o nowych wersjach dla testerów.
Zanim zaczniesz
Dodaj Firebase do projektu na iOS, jeśli jeszcze tego nie zrobiono.
Krok 1. Włącz interfejs App Distribution Tester API
Wybierz swój projekt w konsoli Google Cloud.
W sekcji Interfejs API Firebase App Testers kliknij Włącz.
Krok 2. Dodaj App Distribution do aplikacji
Otwórz utworzony plik Podfile (lub uruchom plik
pod init
, aby go utworzyć), a następnie dodaj ten wiersz w sekcji docelowej:pod 'FirebaseAppDistribution'
W katalogu podpliku uruchom
pod install
, a następnie otwórz utworzony plik.xcworkspace
.Zaimportuj moduł Firebase w strukturze
App
lub w funkcjiUIApplicationDelegate
:Swift
import FirebaseCore import FirebaseAppDistribution
Objective-C
@import FirebaseCore; @import FirebaseAppDistribution;
Skonfiguruj udostępnioną instancję
FirebaseApp
w metodzieapplication(_:didFinishLaunchingWithOptions:)
przedstawiciela 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, prześlij wszystkie otwierane adresy URL do pakietu SDK App Distribution w ramach 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 oferuje 2 sposoby konfigurowania alertów o wersji aplikacji dla testerów: podstawową konfigurację alertu, która zawiera gotowe aktualizacje aplikacji i okna logowania do wyświetlenia testerom, oraz zaawansowaną konfigurację alertu, która umożliwia dostosowywanie własnego interfejsu użytkownika. Jeśli dopiero zaczynasz korzystać z pakietu SDK App Distribution, zalecamy najpierw użycie podstawowej konfiguracji alertów.
Konfiguracja podstawowa
Użyj checkForUpdate
, aby wyświetlić wstępnie utworzone okno włączania alertów dla testerów, którzy jeszcze nie włączyli alertów, a następnie sprawdzić, czy jest dostępna nowa kompilacja. Po wywołaniu metoda wykonuje tę sekwencję:
Sprawdza, czy tester ma włączone alerty, prosząc o zalogowanie się na konto Google.App Distribution
Jeśli tester nie włączył jeszcze alertów, wyświetli się gotowe okno.
Włączanie alertów to jednorazowy proces na urządzeniu testowym, który jest zachowywany w przypadku aktualizacji aplikacji. Alerty pozostają włączone na urządzeniu testowym do momentu odinstalowania aplikacji lub wywołania metody
signOutTester
. Więcej informacji znajdziesz w dokumentacji referencyjnej metody (Swift lub Objective-C).Sprawdzanie, czy są dostępne nowe wersje, które tester może zainstalować.
Możesz wywołać funkcję checkForUpdate()
w dowolnym momencie aplikacji. Możesz na przykład poprosić testerów o zainstalowanie nowo dostępnych kompilacji podczas uruchamiania, dodając polecenie checkForUpdate()
do elementu onAppear(perform:)
widoku głównego aplikacji.
Ten przykład sprawdza, czy tester ma włączone alerty i czy ma dostęp do nowej kompilacji. Jeśli tak, wyświetla okno, 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ść dostosowywania logowania testera, aby lepiej pasowało do wyglądu i działania aplikacji.
Ten przykład sprawdza, czy tester jest już zalogowany na swoje konto Firebase App Distribution. Możesz wyświetlić interfejs logowania tylko dla testerów, którzy nie są jeszcze zalogowani. Gdy tester się zaloguje, możesz zadzwonić pod numer checkForUpdate()
, aby sprawdzić, czy 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
}];
}
Informacje o dodatkowych metodach, w tym signOutTester()
, znajdziesz w dokumentacji referencyjnej App Distribution dotyczącej Swift i Objective-C.
Krok 4. Utwórz i przetestuj implementację
Na koniec skompiluj aplikację i przetestuj implementację, rozpowszechniając kompilację do testerów za pomocą konsoli Firebase.
Aby uzyskać pomoc w rozwiązywaniu typowych problemów, takich jak:
- Tester nie otrzymuje alertów w aplikacji
- Testerowi wyświetla się prośba o zalogowanie się w Google więcej niż raz