Tester über neue Builds informieren


Mit den optionalen Firebase App Distribution iOS- und Android-SDKs können Sie Ihren Testern In-App-Benachrichtigungen anzeigen, wenn neue Builds Ihrer App zur Installation verfügbar sind. In dieser Anleitung wird erläutert, wie Sie mit den App Distribution iOS- und Android-SDKs neue Build-Benachrichtigungen für Ihre Tester erstellen und anpassen.

Hinweis

Fügen Sie Ihrem iOS-Projekt Firebase hinzu, falls noch nicht geschehen.

Schritt 1: App Distribution Tester API aktivieren

  1. Wählen Sie Ihr Projekt in der Google Cloud Konsole aus.

  2. Klicken Sie unter Firebase App Testers API auf Aktivieren.

Schritt 2: App Distribution Ihrer App hinzufügen

  1. Öffnen Sie die Podfile-Datei, die Sie für das Projekt erstellt haben (oder führen Sie pod init aus, um eine zu erstellen), und fügen Sie dann die folgende Zeile in den Zielabschnitt ein:

    pod 'FirebaseAppDistribution'
  2. Führen Sie im Verzeichnis Ihrer Podfile-Datei pod install aus und öffnen Sie dann die erstellte .xcworkspace-Datei.

  3. Importieren Sie das Firebase-Modul in Ihre App Struktur oder UIApplicationDelegate:

    Swift

    import FirebaseCore
    import FirebaseAppDistribution
    

    Objective-C

    @import FirebaseCore;
    @import FirebaseAppDistribution;
    
  4. Konfigurieren Sie eine freigegebene FirebaseApp-Instanz in der Methode application(_:didFinishLaunchingWithOptions:) Ihres App-Delegaten:

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  5. Wenn Swizzling deaktiviert ist, übergeben Sie alle geöffneten URLs in Ihrer Implementierung von application(_:open:options:) an das App Distribution SDK:

    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;
    }
    
  6. Kompilieren Sie Ihre App noch einmal.

Schritt 3: In-App-Benachrichtigungen konfigurieren

Das App Distribution SDK bietet zwei Möglichkeiten, In-App-Build-Benachrichtigungen für Ihre Tester einzurichten: eine grundlegende Benachrichtigungskonfiguration mit vorgefertigten Dialogfeldern für App-Updates und Anmeldungen, die den Testern angezeigt werden, und eine erweiterte Benachrichtigungskonfiguration, mit der Sie eine eigene Benutzeroberfläche anpassen können. Wenn Sie das App Distribution SDK zum ersten Mal verwenden, empfehlen wir die grundlegende Benachrichtigungskonfiguration.

Grundlegende Konfiguration

Verwenden Sie checkForUpdate, um Testern, die Benachrichtigungen noch nicht aktiviert haben, ein vorgefertigtes Dialogfeld zum Aktivieren von Benachrichtigungen anzuzeigen und dann zu prüfen, ob ein neuer Build verfügbar ist. Wenn die Methode aufgerufen wird, wird die folgende Sequenz ausgeführt:

  1. Prüft, ob ein Tester Benachrichtigungen aktiviert hat, indem er aufgefordert wird, sich mit seinem Google-Konto bei App Distribution anzumelden.

  2. Wenn der Tester Benachrichtigungen noch nicht aktiviert hat, wird ein vorgefertigtes Dialogfeld angezeigt.

    Das Aktivieren von Benachrichtigungen ist ein einmaliger Vorgang auf dem Testgerät und bleibt auch nach Updates Ihrer App bestehen. Benachrichtigungen bleiben auf dem Testgerät aktiviert, bis die App deinstalliert wird oder die Methode signOutTester aufgerufen wird. Weitere Informationen finden Sie in der Referenzdokumentation der Methode (Swift oder Objective-C) .

  3. Prüft, ob neue Builds für den Tester zur Installation verfügbar sind.

Sie können checkForUpdate() jederzeit in Ihrer App aufrufen. Sie können Ihre Tester beispielsweise beim Starten der App auffordern, neu verfügbare Builds zu installieren, indem Sie checkForUpdate() in onAppear(perform:) der Stammansicht Ihrer App einfügen.

Im folgenden Beispiel wird geprüft, ob der Tester Benachrichtigungen aktiviert hat und Zugriff auf einen neuen Build hat. Wenn dies der Fall ist, wird ein Dialogfeld angezeigt, wenn der Build zur Installation verfügbar ist:

Swift

Hinweis:Dieses Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
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

Hinweis:Dieses Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
[[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];
  }
}];

Erweiterte Konfiguration

Mit den Methoden signInTester() und isTesterSignedIn haben Sie mehr Flexibilität bei der Anpassung der Anmeldung für Ihre Tester, sodass die Testerfahrung besser zum Erscheinungsbild Ihrer App passt.

Im folgenden Beispiel wird geprüft, ob sich der Tester bereits in seinem Firebase App Distribution Testkonto angemeldet hat. So können Sie die Benutzeroberfläche für die Anmeldung nur Testern anzeigen, die sich noch nicht angemeldet haben. Nachdem sich der Tester angemeldet hat, können Sie checkForUpdate() aufrufen, um zu prüfen, ob der Tester Zugriff auf einen neuen Build hat.

Swift

Hinweis:Dieses Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
// 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

Hinweis:Dieses Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
// 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
  }];
}

Informationen zu zusätzlichen Methoden, einschließlich signOutTester(), finden Sie in der App Distribution Referenzdokumentation für Swift und Objective-C.

Schritt 4: Implementierung erstellen und testen

Erstellen Sie Ihre App und testen Sie Ihre Implementierung, indem Sie den Build über die Firebase Console an Tester verteilen.

In der Anleitung zur Fehlerbehebung App Distribution finden Sie Hilfe zu häufig auftretenden Problemen wie:

  • Tester erhalten keine In-App-Benachrichtigungen
  • Tester werden mehr als einmal aufgefordert, sich bei Google anzumelden