Check out what’s new from Firebase at Google I/O 2022. Learn more

Benachrichtigen Sie Tester über neue Builds

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 diesem Handbuch wird erläutert, wie Sie die App Distribution iOS- und Android-SDKs verwenden, um neue Build-Benachrichtigungen für Ihre Tester zu erstellen und anzupassen.

Bevor Sie beginnen

Falls noch nicht geschehen, fügen Sie Firebase zu Ihrem iOS-Projekt hinzu .

Schritt 1 : Aktivieren Sie die App Distribution Tester-API

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

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

Schritt 2 : Fügen Sie App Distribution zu Ihrer App hinzu

  1. Öffnen Sie die Pod-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 Pod-Datei pod install aus und öffnen Sie dann die erstellte .xcworkspace -Datei.

  3. Codieren Sie Ihre Google-App-ID ( nur für iOS-Versionen 9 und 10 erforderlich ):

    Codieren Sie Ihre Google-App-ID

    Fügen Sie das URL-Schema appdistribution-<encoded-google-app-id> hinzu, indem Sie das Snippet in Ihre Info.plist file (Anweisungen zum Hinzufügen des URL-Schemas in Xcode finden Sie in der Dokumentation von Apple ):

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appdistribution-<encoded-google-app-id></string>
            </array>
        </dict>
    </array>
    

    Codieren Sie dann Ihre Google-App-ID, indem Sie die Doppelpunkte (:) durch Bindestriche (-) ersetzen. Beachten Sie, dass sich Ihre Google-App-ID in Ihrer Datei GoogleService-Info.plist . Wenn Ihre Google-App-ID beispielsweise lautet:

    7:77777777777:ios:123456789

    Ihre verschlüsselte Google-App-ID lautet:

    7-77777777777-ios-123456789
  4. Importieren Sie das Firebase-Modul in Ihre App -Struktur oder UIApplicationDelegate :

    Schnell

    import FirebaseCore
    

    Ziel c

    @import FirebaseCore;
    
  5. Konfigurieren Sie eine freigegebene FirebaseApp -Instanz, normalerweise in der Methode application(_:didFinishLaunchingWithOptions:) Ihrer App 's initializer oder des App-Delegaten:

    Schnell

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

    Ziel c

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. Kompilieren Sie abschließend Ihre App neu.

Schritt 3 : Konfigurieren Sie In-App-Warnungen

Das App Distribution SDK bietet zwei Möglichkeiten zum Einrichten von In-App-Build-Warnungen für Ihre Tester: eine grundlegende Warnkonfiguration, die mit vorgefertigten App-Update- und Anmeldedialogen zur Anzeige für Tester geliefert wird, und eine erweiterte Warnkonfiguration, die es ermöglicht Sie können Ihre eigene Benutzeroberfläche anpassen. Wir empfehlen, zuerst die grundlegende Benachrichtigungskonfiguration zu verwenden, wenn Sie neu im App Distribution SDK sind.

Grundkonfiguration

Verwenden Sie checkForUpdate , um Testern, die noch keine Warnungen aktiviert haben, einen vorgefertigten Dialog zum Aktivieren von Warnungen anzuzeigen, und prüfen Sie dann, ob ein neuer Build verfügbar ist. Beim Aufruf führt die Methode die folgende Sequenz aus:

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

  2. Wenn der Tester Warnungen noch nicht aktiviert hat, zeigt ein vorgefertigtes Dialogfeld an.

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

  3. Sucht nach neu verfügbaren Builds, die der Tester installieren kann.

Sie können checkForUpdate() an jedem Punkt in Ihrer App aufrufen. Beispielsweise können Sie Ihre Tester auffordern, neu verfügbare Builds beim Start zu installieren, indem checkForUpdate() in onAppear(perform:) der Root-Ansicht Ihrer App einfügen.

Das folgende Beispiel prüft, ob der Tester Warnungen aktiviert hat und Zugriff auf einen neuen Build hat, und zeigt in diesem Fall einen Dialog an, wenn der Build zur Installation verfügbar ist:

Schnell

Hinweis: Dieses Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht verfügbar.
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
  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)
})

Ziel c

Hinweis: Dieses Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht verfügbar.
[[FIRAppDistribution appDistribution]
  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                 NSError *_Nullable error) {
  if (error) {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Check For Update"
message:[NSString stringWithFormat:@"Error during tester sign in! %@", error.localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {}];

    [alert addAction:okAction];
    [self presentViewController:alert animated:YES completion:nil];

    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

Die Methoden signInTester() und isTesterSignedIn Ihnen mehr Flexibilität beim Anpassen der Anmeldeerfahrung Ihres Testers, damit sie besser zum Erscheinungsbild Ihrer App passt.

Im folgenden Beispiel wird überprüft, ob sich der Tester bereits bei seinem Firebase App Distribution-Testerkonto angemeldet hat, sodass Sie Ihre Anmeldebenutzeroberfläche nur für Tester anzeigen können, die sich noch nicht angemeldet haben. Nachdem sich der Tester angemeldet hat, können Sie dies tun Rufen checkForUpdate() auf, um zu prüfen, ob der Tester Zugriff auf einen neuen Build hat.

Schnell

Hinweis: Dieses Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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
  })
}

Ziel c

Hinweis: Dieses Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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 : Erstellen und testen Sie Ihre Implementierung

Erstellen Sie schließlich Ihre App und testen Sie Ihre Implementierung, indem Sie den Build mithilfe der Firebase-Konsole an Tester verteilen .

Besuchen Sie den Leitfaden zur Fehlerbehebung bei der App-Verteilung, um Hilfe bei häufigen Problemen zu erhalten, z. B.:

  • Tester erhält keine In-App-Warnungen
  • Der Tester wird mehr als einmal aufgefordert, sich bei Google anzumelden