Gli SDK opzionali Firebase App Distribution per iOS e Android ti consentono di visualizzare avvisi in-app ai tuoi tester quando sono disponibili per l'installazione nuove build della tua app. Questa guida spiega come utilizzare gli SDK App Distribution per iOS e Android per creare e personalizzare gli avvisi di nuove build per i tuoi tester.
Prima di iniziare
Se non l'hai già fatto, aggiungi Firebase al tuo progetto iOS .
Passaggio 1 : attiva l'API App Distribution Tester
Seleziona il tuo progetto nella console Google Cloud .
In API Firebase App Testers , fai clic su Abilita .
Passaggio 2 : aggiungi App Distribution alla tua app
Apri il Podfile che hai creato per il progetto (o esegui
pod init
per crearne uno), quindi aggiungi la seguente riga all'interno della sezione di destinazione:pod 'FirebaseAppDistribution'
Nella directory del tuo podfile, esegui
pod install
, quindi apri il file.xcworkspace
creato.Importa il modulo Firebase nella struttura
App
oUIApplicationDelegate
:Veloce
import FirebaseCore import FirebaseAppDistribution
Obiettivo-C
@import FirebaseCore; @import FirebaseAppDistribution;
Configura un'istanza condivisa
FirebaseApp
nel metodoapplication(_:didFinishLaunchingWithOptions:)
del delegato dell'app:Veloce
// Use Firebase library to configure APIs FirebaseApp.configure()
Obiettivo-C
// Use Firebase library to configure APIs [FIRApp configure];
Se lo swizzling è disabilitato, passa tutti gli URL aperti all'SDK di App Distribution nella tua implementazione di
application(_:open:options:)
:Veloce
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 }
Obiettivo-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; }
Infine, ricompila la tua app.
Passaggio 3 : configura gli avvisi in-app
L'SDK di App Distribution fornisce due modi per impostare avvisi di build in-app per i tuoi tester: una configurazione di avvisi di base, che include aggiornamenti dell'app predefiniti e finestre di dialogo di accesso da visualizzare ai tester, e una configurazione di avvisi avanzata, che consente di personalizzare la tua interfaccia utente. Ti consigliamo di utilizzare prima la configurazione degli avvisi di base se non hai familiarità con l'SDK di App Distribution.
Configurazione di base
Utilizza checkForUpdate
per visualizzare una finestra di dialogo di attivazione degli avvisi predefinita per i tester che non hanno ancora abilitato gli avvisi, quindi controlla se è disponibile una nuova build. Quando viene chiamato, il metodo esegue la seguente sequenza:
Controlla se un tester ha abilitato gli avvisi chiedendogli di accedere ad App Distribution con il proprio Account Google.
Se il tester non ha ancora abilitato gli avvisi, visualizza una finestra di dialogo predefinita.
L'abilitazione degli avvisi è un processo una tantum sul dispositivo di prova e persiste attraverso gli aggiornamenti dell'app. Gli avvisi rimangono abilitati sul dispositivo di test finché l'app non viene disinstallata o finché non viene chiamato il metodo
signOutTester
. Per ulteriori informazioni, vedere la documentazione di riferimento del metodo ( Swift o Objective-C ).Verifica la presenza di nuove build disponibili per l'installazione del tester.
Puoi richiamare checkForUpdate()
in qualsiasi punto della tua app. Ad esempio, puoi chiedere ai tester di installare le nuove build disponibili all'avvio includendo checkForUpdate()
in onAppear(perform:)
della visualizzazione root della tua app.
L'esempio seguente controlla se il tester ha abilitato o meno gli avvisi e ha accesso a una nuova build e, in tal caso, visualizza una finestra di dialogo quando la build è disponibile per l'installazione:
Veloce
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)
})
Obiettivo-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];
}
}];
Configurazione avanzata
I metodi signInTester()
e isTesterSignedIn
ti offrono maggiore flessibilità nella personalizzazione dell'esperienza di accesso del tester, in modo che possa corrispondere meglio all'aspetto della tua app.
L'esempio seguente controlla se il tester ha già effettuato l'accesso al proprio account tester Firebase App Distribution, quindi puoi scegliere di visualizzare l'interfaccia utente di accesso solo per i tester che non hanno ancora effettuato l'accesso. Dopo che il tester ha effettuato l'accesso, puoi quindi chiamare checkForUpdate()
per verificare se il tester ha accesso a una nuova build.
Veloce
// 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
})
}
Obiettivo-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
}];
}
Per informazioni su metodi aggiuntivi, incluso signOutTester()
, consulta la documentazione di riferimento di App Distribution per Swift e Objective-C .
Passaggio 4 : crea e testa la tua implementazione
Infine, crea la tua app e testa l'implementazione distribuendo la build ai tester utilizzando la console Firebase.
Visita la guida alla risoluzione dei problemi di distribuzione delle app per assistenza con problemi comuni, come:
- Il tester non riceve avvisi in-app
- Al tester viene richiesto di accedere a Google più di una volta