Ich habe sehr oft einen Absturz in meiner App. Es scheint ein Absturz von iOS-System nur in den neuesten iOS 11 passiert.
Dies ist der Absturz
%Vor%Nicht sicher, was dieser Absturz ist. kann jemand mit diesem Problem helfen?
Wir hatten dasselbe Problem, nachdem wir auf das neueste Facebook SDK aktualisiert hatten (von einer recht alten Version 4.11 auf 4.27.1). Tatsächlich hatten wir einige Aufrufe von applicationDidBecomeActive
event ausgelöst, die den Facebook-Login ausgelöst haben (also ein SFAuthenticationSession
öffnen, was die SFAuthenticationViewController
öffnet, die den Benutzer auffordert, die Authentifizierung mit Facebook oder einem anderen Drittanbieter fortzusetzen). Sobald der Nutzer auf "Weiter" geklickt hat, löste er das Ereignis applicationDidBecomeActive
erneut aus. Dies verursachte eine Endlosschleife beim Starten von neuem SFAuthenticaionSessions
, was zu einem Absturz führte. Wir haben uns also entschieden, Facebook von dieser Veranstaltung überhaupt nicht anzurufen. Um zusammenzufassen, wie man diesen Absturz vermeiden kann: Sie müssen sicherstellen, dass Sie den Facebook-Login (oder SFAuthenticationSession
start()
method) nur einmal gleichzeitig aufrufen.
Wie @ Zoltán Homoki und @Jelly sagten, sollten wir logInWithReadPermissions
nur einmal aufrufen.
Zu diesem Zweck ist eine allgemeine Implementierung (die vorher in Ordnung war), ein Flag in appDelegate
like:
Verwende es dann, um mehrfache Aufrufe des Facebook-Logins zu verhindern:
%Vor% Das Problem ist, dass auf iOS11 mit FBSDKLoginKit
& gt; = 4.27 application:openURL:sourceApplication:annotation:
nicht aufgerufen wird (noch application:openURL:option
), so dass das Flag nicht gesetzt ist. Das erzeugt mehrere Aufrufe an die Anmeldung ( applicationDidBecomeActive
wird aufgerufen, wenn der Benutzer das erste Popup schließt)
Die Lösung, die ich gefunden habe, ist, vor jedem Aufruf von FBSDKLoginManager
ein Flag zu setzen und jeden anderen Anruf zu stoppen, bis der Vorgang abgeschlossen ist.
Dies scheint mit den Versionen 4.22 bis 4.28 von FBSDKLoginKit zu funktionieren.