Ich rufe die Facebook Graph API an, um die E-Mail, die Facebook ID und den Namen eines Benutzers zu erhalten, der sich über Facebook bei meiner App anmeldet.Versandwarteschlangen für asynchronen Webdienst Anruf
Ich bekomme die Informationen erfolgreich; Ich versuche jetzt, Dispatch-Gruppen zu verwenden, also die Funktion, die der Aufruf-Graph wartet, bis der Graph-API-Aufruf abgeschlossen ist, bevor er zurückkehrt. Die Grafikanforderung ist asynchron.
Ich kann nicht herausfinden, warum dieser Code blockiert.
1) Erstellen Sie eine Versandgruppe
2) Geben Sie die Anzeigegruppe
3) Lassen Sie die Gruppe einmal Informationen abgerufen wird oder ein Fehler gefunden wird
4) Warten Sie auf die Gruppe verlassen vor Zurückgeben
Es scheint wie meine Versandgruppe eingeben wird nicht korrekt aufgerufen, aber ich kann nicht herausfinden, warum.
class func getFBInformation()->Bool {
var fbResult = false
let fbGraphGroup = DispatchGroup()
fbGraphGroup.enter()
FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "id, name, email"]).start { (connection, result, err) in
if err != nil {
fbResult = false
print("Pre Error Signal")
fbGraphGroup.leave()
return
}
if let resultDict = result as? [String:AnyObject] {
<Do things with graph results>
print("Pre success signal")
fbResult = true
fbGraphGroup.leave()
}
}
fbGraphGroup.wait()
print("Post signal")
return fbResult
}