Share via


Problembehandlung für das iOS SDK

Wichtig

Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis es vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie möglicherweise eine Migration in Erwägung ziehen.

Erfahren Sie mehr über Supportzeitpläne und Alternativen.

Probleme beim Einrichten

  1. Suchen Sie in der Konsole nach einem Assert-Protokoll mit der Meldung "App Center SDK erfolgreich konfiguriert". Die Meldung impliziert, dass das SDK erfolgreich konfiguriert wurde.
  2. Wenn Sie Cocoapods verwenden, um App Center in Ihre iOS-App zu integrieren und einen Fehler mit der Meldung - CocoaPods - Unable to find a specification for AppCenterauftreten, führen Sie pod repo update aus, um Ihr lokales Cocoapods-Repository zu aktualisieren, und führen Sie dann erneut aus pod install .
  3. Wenn Sie CocoaPods verwenden, um App Center in Ihre iOS-App zu integrieren, und während der Projektkompilierung tritt ein Fehler mit der Meldung auf. framework not found AppCenter.xcframework Anschließend müssen Sie Cocoapods auf die späte Version aktualisieren (neu installieren), indem Sie ausführen [sudo] gem install cocoapods.
  4. Wenn Sie die SDK-Binärdateien manuell integrieren, stellen Sie sicher, dass Module für Ihr Projekt aktiviert sind.

Analysedaten werden nicht im Portal angezeigt.

  1. Stellen Sie sicher, dass Sie die SDK-Module ordnungsgemäß integriert haben.

  2. Stellen Sie sicher, dass das richtige App-Geheimnis zusammen mit dem start:withServices: Methodenaufruf enthalten ist. Sie können den genauen start:withServices:-Code kopieren, indem Sie die App im Portal öffnen und zu Erste Schritte Seite navigieren.

  3. Wenn Sie die Protokolle anzeigen möchten, die an das Back-End gesendet werden, ändern Sie die Protokollebene in Ihrer Anwendung in Ausführlich . Das SDK gibt dann die Protokolle in der Konsole aus. Fügen Sie den folgenden Aufruf ein, bevor das SDK gestartet wird:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Stellen Sie sicher, dass "App Center SDK erfolgreich konfiguriert" in den Protokollen (auf INFO-Protokollebene ) angezeigt wird. Überprüfen Sie dann, ob HTTPS-Anforderungsprotokolle angezeigt werden.

  4. Stellen Sie sicher, dass Ihr Gerät online ist.

  5. Manchmal kann es einige Minuten dauern, bis Protokolle im Portal angezeigt werden. Warten Sie einige Zeit, wenn dies der Fall ist.

  6. Um zu überprüfen, ob das App Center-Back-End Ihre Daten empfangen hat, wechseln Sie zum Abschnitt Protokollfluss im Analytics-Dienst . Ihre Ereignisse sollten angezeigt werden, sobald sie gesendet wurden.

Abstürze werden nicht im Portal angezeigt

  1. Stellen Sie sicher, dass Sie die SDK-Module ordnungsgemäß integriert haben.

  2. Stellen Sie sicher, dass das richtige App-Geheimnis zusammen mit dem start:withServices: Methodenaufruf enthalten ist. Sie können den genauen start:withServices: Code kopieren, indem Sie die App im Portal öffnen und zu Erste Schritte Seite navigieren.

  3. App Center-Abstürze leitet das Absturzprotokoll erst weiter, nachdem die App neu gestartet wurde. Außerdem leitet das SDK keine Absturzprotokolle weiter, wenn Sie an den Debugger angefügt sind. Stellen Sie sicher, dass der Debugger nicht angefügt ist, wenn Sie die App abstürzen.

  4. Wenn Sie die Protokolle anzeigen möchten, die an das Back-End gesendet werden, ändern Sie die Protokollebene in Ihrer Anwendung in Ausführlich . Das SDK gibt dann die Protokolle in der Konsole aus. Fügen Sie den folgenden Aufruf ein, bevor das SDK gestartet wird:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Stellen Sie sicher, dass "App Center SDK erfolgreich konfiguriert" in den Protokollen (auf INFO-Protokollebene ) angezeigt wird. Überprüfen Sie dann, ob HTTPS-Anforderungsprotokolle angezeigt werden.

  5. Verwenden Sie keine anderen Bibliotheken, die Absturzberichterstattungsfunktionen bereitstellen. Sie können nur ein SDK für die Absturzberichterstattung in Ihre App integrieren.

  6. Stellen Sie sicher, dass Ihr Gerät online ist.

  7. Manchmal kann es einige Minuten dauern, bis Protokolle im Portal angezeigt werden. Warten Sie einige Zeit, wenn dies der Fall ist.

  8. Überprüfen Sie, ob das SDK den Absturz beim nächsten Start der App erkannt hat. Sie können die API aufrufen, um zu überprüfen, ob die App in der letzten Sitzung abgestürzt ist und eine Warnung anzeigt. Oder Sie können den Absturzrückruf didSucceedSendingErrorReport erweitern, um festzustellen, ob er erfolgreich an den Server gesendet wurde.

  9. Um zu überprüfen, ob das App Center-Back-End den Absturz erhalten hat, wechseln Sie im Analysedienst zum Abschnitt Protokollflow. Ihre Abstürze sollten dort angezeigt werden, nachdem sie gesendet wurden.

Die Warnung, die Benutzer zu einem Update auffordert, enthält keine Zeichenfolgen, sondern nur die Schlüssel für sie.

Dies bedeutet, dass das AppCenterDistributeResources.bundle dem Projekt nicht hinzugefügt wurde. Stellen Sie sicher, dass Sie die Datei in Ihrem Xcode-Projekt abgelegt haben, und sie wird in der Buildphase Ihres App-Ziels Copy Bundle Resources angezeigt. Es sollte dort angezeigt werden, wenn Sie die Datei per Drag and Drop hinzugefügt haben – Xcode erledigt dies automatisch für Sie. Wenn die Datei in der Buildphase fehlt, fügen Sie sie hinzu, damit sie in das Bündel Ihrer App kompiliert wird.

Wenn Sie Cocoapods verwenden, kümmert es sich automatisch um die Ressourcen. Versuchen Sie, den Pod neu zu installieren.

In der Konsole werden Meldungen angezeigt, die darauf hinweisen, dass die Datenbank nicht geöffnet werden konnte.

Ab Version 0.11.0 des iOS SDK verwendet App Center SQLite, um Protokolle zu speichern, bevor sie an das Back-End gesendet werden. Wenn Sie Ihre Anwendung mit Ihrer eigenen SQLite-Bibliothek bündeln, anstatt die vom Betriebssystem bereitgestellte bibliothek zu verwenden, werden möglicherweise Fehler wie diese in der Konsole [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database angezeigt, und im Back-End werden keine Analyse- oder Absturzinformationen angezeigt. Aktualisieren Sie das SDK auf Version 0.13.0 oder höher.

Verteilen und In-App-Updates blockieren meine automatisierten Benutzeroberflächentests

Wenn In-App-Updates aktiviert sind, werden Ihre automatisierten Ui-Tests blockiert. Der Updatevorgang versucht, sich beim App Center-Back-End zu authentifizieren. Es wird empfohlen, App Center Distribute nicht für Ihr UI-Testziel zu aktivieren.

Warum das SDK als "statische Bibliothek" verteilt wird

Die primären Entwurfsziele für das App Center SDK bestehen darin, minimale Auswirkungen auf die App mithilfe von App Center zu haben und über ein modulares SDK zu verfügen. Dies würde dazu führen, dass das SDK als mehrere dynamisch verknüpfte freigegebene Bibliotheken verteilt wird.

In der Vergangenheit unterstützte iOS keine dynamischen verknüpften freigegebenen Bibliotheken, wurde aber in iOS 8 hinzugefügt, wie in diesem Blogbeitrag von Landon Fuller erläutert.

App Center wird jedoch als statisch verknüpfte freigegebene Bibliothek verteilt, die in ein "fat"-Fake-Framework umschlossen ist. Dies bedeutet, dass das SDK zur Kompilierzeit und nicht zur Startzeit verknüpft ist, um eine bessere Leistung zu erzielen. Das Laden mehrerer dynamisch verknüpfter freigegebener Bibliotheken benötigt Zeit.

Apple empfiehlt, den App-Start so zu optimieren, dass in einer WWDC-Sitzung nicht mehr als 400 ms dauern. Sie empfehlen insbesondere statische freigegebene Bibliotheken gegenüber dynamischen freigegebenen Bibliotheken, um dieses Ziel zu erreichen. Das Verteilen des App Center SDK für iOS als statisch verknüpfte freigegebene Bibliothek folgt der Empfehlung von Apple, die beste Leistung und minimale Auswirkungen auf die App zu bieten, die das SDK enthält.

Um mehr über statisch verknüpfte freigegebene Bibliotheken im Vergleich zu dynamischen verknüpften freigegebenen Bibliotheken zu erfahren, empfehlen wir die allgemeine Dokumentation von Apple zu diesem Thema.

Warum sind die SDK-Binärdateien so groß? Ich bin besorgt über die Größe meiner App

Die AppCenter-Binärdateien werden als "fat"-Frameworks verteilt, die Slices für alle iPhone-Architekturen und für den iPhone-Simulator enthalten. Aus diesem Grund ist beispielsweise AppCenter.framework 10,5 MB zum Herunterladen verfügbar.

Die kompilierte Größe der SDK-Binärdateien ist viel kleiner als die Größe, die .framework Sie Ihrer App in Xcode hinzufügen. Beachten Sie auch, dass Releasebuilds kleiner sind als Debugbuilds.

Um dies zu veranschaulichen, haben wir eine leere Objective-C-Anwendung mit Xcode 9.2 erstellt, die App Center-Binärdateien zur App hinzugefügt und Releasebuilds zu einem iPhone 7 mit iOS 11.3 verteilt.

Wir haben die Tests ohne aktiviertes Bitcode ausgeführt und app Thinning nicht verwendet. Sie können diese Techniken verwenden, um die Binärgröße Ihrer App noch weiter zu verkleinern.

Die folgenden Zahlen können variieren und hängen von Ihren Buildeinstellungen ab. Betrachten Sie sie daher als grobe Anleitung. Allerdings hat das Hinzufügen des App Center SDK zu Ihrer App einen minimalen Einfluss auf die Größe Ihrer Anwendungsbinärdatei.

Verwendete App Center-Module Exportierte IPA-Größe Installationsgröße
Keine (leere App) 24 KB 132 KB
App Center-Analysen 120 KB 377 KB
App Center-Absturz 239 KB 705 KB
App Center-Verteilung 163 KB 528 KB
Alle App Center-Module 314 KB 930 KB

Schützen des App Center-Geheimniswerts

ist app_secret ein Bezeichner Ihrer App, es muss wissen, für welche App der Datenverkehr gilt, und es kann nicht zum Abrufen oder Bearbeiten vorhandener Daten verwendet werden. Wenn Ihre app_secret verfügbar gemacht wird, besteht das größte Risiko darin, fehlerhafte Daten an Ihre App zu senden, aber dies hat keine Auswirkungen auf die Sicherheit der Daten.

Zum Abrufen vertraulicher Daten müssen Sie ein App-/ Benutzertoken bereitstellen, das auf der Clientseite generiert wird. Es gibt keine Möglichkeit, Daten auf clientseitiger Seite vollständig sicher zu machen.

Sie können die Sicherheit Ihrer App verbessern, indem Sie eine Umgebungsvariable verwenden, um das App-Geheimnis in Ihren Code einzufügen. Auf diese Weise ist das Geheimnis in Ihrem Code nicht sichtbar.