Gli SDK Firebase App Distribution per iOS e Android facoltativi ti consentono di mostrare ai tester avvisi in-app quando sono disponibili nuove build dell'app da installare. Questa guida spiega come utilizzare gli SDK App Distribution per iOS e Android per creare e personalizzare nuovi avvisi di compilazione per i tester.
Prima di iniziare
Se non lo hai già fatto, aggiungi Firebase al tuo progetto iOS.
Passaggio 1: attiva l'API App Distribution Tester
Seleziona il progetto nella console Google Cloud.
In API Firebase App Tester, fai clic su Attiva.
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 nella sezione target:pod 'FirebaseAppDistribution'
Nella directory del podfile, esegui
pod install
, quindi apri il file.xcworkspace
creato.Importa il modulo Firebase nella struct
App
o inUIApplicationDelegate
:Swift
import FirebaseCore import FirebaseAppDistribution
Objective-C
@import FirebaseCore; @import FirebaseAppDistribution;
Configura un'istanza condivisa
FirebaseApp
nel metodoapplication(_:didFinishLaunchingWithOptions:)
del tuo app delegate:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
Se lo scambio non è abilitato, passa gli URL aperti all'SDK App Distribution nell'implementazione di
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; }
Infine, ricompila l'app.
Passaggio 3: configura gli avvisi in-app
L'SDK App Distribution offre due modi per configurare gli avvisi di compilazione in-app per i tester: una configurazione di avviso di base, che include dialoghi di aggiornamento e accesso predefiniti da mostrare ai tester, e una configurazione di avviso avanzata, che ti consente di personalizzare la tua interfaccia utente. Se non hai mai utilizzato l'SDKApp Distribution, ti consigliamo di utilizzare prima la configurazione di avviso di base.
Configurazione di base
Utilizza checkForUpdate
per visualizzare una finestra di dialogo predefinita per attivare gli avvisi ai tester che non li hanno ancora attivati, quindi controlla se è disponibile una nuova build. Quando viene chiamato, il metodo esegue la seguente sequenza:
Controlla se un tester ha attivato gli avvisi chiedendogli di accedere App Distribution con il suo Account Google.
Se il tester non ha ancora attivato gli avvisi, viene visualizzata una finestra di dialogo predefinita.
L'attivazione degli avvisi è un processo una tantum sul dispositivo di test e viene mantenuto negli aggiornamenti dell'app. Gli avvisi rimangono attivi sul dispositivo di test finché l'app non viene disinstallata o fino a quando non viene chiamato il metodo
signOutTester
. Per saperne di più, consulta la documentazione di riferimento del metodo (Swift o Objective-C).Verifica la presenza di build di nuova disponibilità da installare per il tester.
Puoi richiamare checkForUpdate()
in qualsiasi punto dell'app. Ad esempio, puoi chiedere ai tester di installare le build appena disponibili all'avvio includendo checkForUpdate()
in onAppear(perform:)
della vista principale dell'app.
L'esempio seguente controlla se il tester ha attivato gli avvisi e ha accesso a una nuova build e, in questo caso, mostra una finestra di dialogo quando la build è disponibile per l'installazione:
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];
}
}];
Configurazione avanzata
I metodi signInTester()
e isTesterSignedIn
ti offrono maggiore flessibilità per personalizzare l'esperienza di accesso del tester, in modo che possa adattarsi meglio all'aspetto e al design della tua app.
L'esempio seguente verifica se il tester ha già eseguito l'accesso al suo account di tester Firebase App Distribution, in modo da poter scegliere di mostrare l'interfaccia utente di accesso solo ai tester che non hanno ancora eseguito l'accesso. Dopo che il tester ha eseguito
l'accesso, puoi chiamare checkForUpdate()
per verificare se ha accesso a una nuova build.
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
}];
}
Per informazioni su metodi aggiuntivi, tra cui signOutTester()
, consulta la documentazione di riferimento di App Distribution per Swift e Objective-C.
Passaggio 4: crea e testa l'implementazione
Infine, crea l'app e testa l'implementazione distribuendo la build ai tester utilizzando la console Firebase.
Consulta la App DistributionGuida alla risoluzione dei problemi per assistenza in merito a problemi comuni, ad esempio:
- Il tester non riceve avvisi in-app
- Al tester viene chiesto di accedere a Google più di una volta