Ich habe versucht, die Facebook-API des Corona SDK zu verwenden, um die Punktzahl für das Spiel, das ich entwickle, auf Facebook zu veröffentlichen. Ich habe jedoch ein Problem damit. Beim ersten Versuch, auf Facebook zu posten, wird nach der Anmeldung und Benutzerauthentifizierung folgende Fehlermeldung angezeigt:
NSURLErrorDomain-Fehlercode -999
Dann wird es nicht auf Facebook gepostet. Was sind mögliche Ursachen für diesen Fehler und wie kann ich ihn beheben? Ich habe versucht, im Internet zu suchen, konnte aber keine Informationen darüber finden. Danke im Voraus.
Übrigens verwende ich Webview nicht in meiner App. Nur die Widget-API und ein show_dialog-Listener in meiner Facebook-Klasse.
hjpotter92 ist absolut richtig, ich möchte nur eine Lösung für meinen Fall anbieten. Hoffentlich ist es auch für Sie nützlich. Hier ist meine Situation:
Auf der Anmeldeseite> Anmelden drücken> Popup-Ladedialog> Anmeldedienst aufrufen> Dialog schließen> einen anderen Bildschirm drücken> einen anderen Dienst aufrufen -> Fehler verursachen -999
Um dies zu beheben, habe ich eine Verzögerung zwischen dem Schließen des Dialogfelds und dem Drücken eines neuen Bildschirms eingefügt:
[indicatorAlert dismissWithClickedButtonIndex:0 animated:YES]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ [self performSegueWithIdentifier:@"HomeSegue" sender:nil]; });
Es ist seltsam, dass dieses Problem nur unter iOS 7 auftritt.
quelle
Ich wollte hier nur hinzufügen, wenn
-999 "cancelled"
das Problem normalerweise eines von zwei Dingen ist:manager
Objekt bei, der vorzeitig freigegeben wird. (Starke Referenz erstellen)quelle
POST
Methode verwende, um genau dieselbeJSON
Zeichenfolge an dieselbe Adresse zu senden , wird sie abgebrochen? In meinem Fall wird es einfach abgebrochen, selbst wenn die vorherige Anforderung abgeschlossen ist.Ich habe den gleichen Fehler mit Alamofire gesehen und es lag daran, dass das Zertifikat fixiert wurde. Das Zertifikat war nicht mehr gültig, daher musste ich es entfernen und das neue hinzufügen. Ich hoffe es hilft.
quelle
Ich habe nicht Corona SDK Facebook - API verwenden , aber ich dieses Problem auftreten , wenn Alamofire verwenden, die
secondRequest
kündigen immer in der Ausführung mit dem Fehler -999, nach den Pfosten ich im Internet gefunden wird , ist der Grund , dasssession
Eigenschaft istdeinit
vor dem Abschluss der Asynchron - Arbeit seit Es liegt außerhalb des Bereichs. Ich habe dieses Problem schließlichdeinit
manuell durch die Sitzungseigenschaft gelöst, damit der Compiler es nicht an der falschen Position deinitiert:class SessionManager { var session:SessionManager? init() { self.session = SessionManager(configuration:URLSessionConfiguration.ephemeral) } private func firstRequest() { guard let session = self.session else {return} session.request(request_url).responseData {response in if let data=response.data { self.secondRequest() } } private func secondRequest() { guard let session = self.session else {return} session.request(request_url).responseData {response in if let data=response.data { self.secondRequest() } //session will no longer be needed, deinit it self.session = nil } }
quelle
Die App unseres Unternehmens weist unter iOS viele Fehler von -999 auf. Ich habe mich umgesehen und festgestellt, dass der Grund zwei hat, z. B. dass die Netzwerkaufgabe freigegeben wurde oder das Zertifikat nicht gültig ist. Aber ich habe unseren Code überprüft, diese beiden sind nicht möglich. Ich verwende Alamofire, das URLSession verwendet. Glücklicherweise ist das Netzwerk der Android-App unseres Unternehmens normal. Also prüfen wir den Unterschied. Wir haben festgestellt, dass die http-Anfrage von iOS Http2.0 ist, während Android Http1.1 ist. Also erzwingen wir die http-Support-Version des Backends auf http1.1, dann sinkt die Anzahl der -999-Fehler !!!
Ich denke, es gibt vielleicht einen Fehler in Apples URLSession. Überprüfen Sie den Link Neue NSURLSession für jeden DataTask-Overkill? für einige detaillierte Gedanken
quelle
Zusätzlich zu dem, was Ramon geschrieben hat, gibt es einen dritten möglichen Grund, wenn er Folgendes erhält
NSURLErrorDomain -999 cancelled
:Sie haben die Aufgabe während der Ausführung abgebrochen, indem Sie entweder
.cancel()
das Datenaufgabenobjekt aufgerufen haben oder weil Sie sie.invalidateAndCancel()
für das Sitzungsobjekt verwendet haben. Wenn Sie eine benutzerdefinierte Sitzung mit einem Delegaten erstellen, sollten Sie die starke Referenz zwischen der Sitzung und ihrem Delegaten aufrufen.invalidateAndCancel()
oder.finishTasksAndInvalidate()
auflösen, wie in der Apple Developer-Dokumentation erwähnt :Wenn Sie sich über dieses Protokollierungsverhalten wundern, habe ich in den Apple Developer-Foren die folgende Erklärung gefunden :
quelle
Ich habe diesen Fehler in der iOS-spezifischen Version der Xamarin-App erhalten. Ich bin mir nicht sicher, welche Ursache zugrunde liegt, aber in meinem Fall konnte ich sie mithilfe der Post-Methode umgehen, anstatt nach etwas zu suchen, das den Serverkontext im Anfragetext übergibt - was ohnehin sinnvoller ist. Android / Windows / der Dienst verarbeiten alle das GET mit Inhalten, aber in der iOS-App reagiert es teilweise nicht mehr und spuckt dann das 999 NSUrlErrorDomain-Material im Protokoll aus. Hoffentlich hilft das jemand anderem dabei. Ich gehe davon aus, dass der Netzcode in einer Schleife steckt, aber den fraglichen Code nicht sehen konnte.
quelle
Bei meinem Cordova-Projekt (oder ähnlichem) stellte sich heraus, dass es sich um ein Plugin-Problem handelte . Stellen Sie sicher, dass Sie keine Plugins verpassen und dass diese ohne Probleme ordnungsgemäß installiert sind.
Die einfachste Möglichkeit, dies zu überprüfen, besteht darin, das Cordova-Projekt (
cordova create <path>
) zusammen mit den erforderlichen Plattformen (cordova platform add <platform name>
) neu zu erstellen und jedes Plugin mit dem ausführlichen Flag (--verbose) hinzuzufügen, damit Sie sehen können, ob im Konsolenprotokoll ein Fehler aufgetreten ist Während das Plugin heruntergeladen, zum Projekt hinzugefügt und für jede Plattform installiert wird (cordova plugin add cordova-plugin-device --verbose
)Rekapitulieren:
cordova create <path>
cordova platform add <platform name>
cordova plugin add cordova-plugin-device --verbose
quelle
Bitte überprüfen Sie bei Ihrem Anruf
cancel()
auf ,URLSessionDataTask
um fixNSURLErrorDomain Code=-999 "cancelled"
quelle