I've been trying to use Corona SDK's Facebook API to post the score on the game I'm developing on facebook. However, I'm having a problem with it. During the first time I try to post to facebook, I get this error after login and user authentication:
NSURLErrorDomain error code -999
Then, it won't post on facebook. What are possible causes of this error and how can I address it? I tried searching the web but couldn't find information about it. Thanks in advance.
By the way, I am not using webview on my app. Just the widget api and a show_dialog listener in my Facebook class.
In addition to what Ramon wrote, there is a third possible reason when receiving a
NSURLErrorDomain -999 cancelled
:You cancelled the task while it was executing either by calling
.cancel()
on the datatask object or because you used.invalidateAndCancel()
on the session object. If you are creating a custom session with a delegate, you should call.invalidateAndCancel()
or.finishTasksAndInvalidate()
to resolve the strong reference between the session and its delegate, as mentioned in the Apple Developer Documentation:If you are wondering about this logging behaviour, I found the following explanation in the Apple Developer forums:
The error has been documented on the Mac Developer Library(iOS docs)
The concerned segment from the documentation will be:
As you can see;
-999
is caused byErrorCancelled
. This means: another request is made before the previous request is completed.Just wanted to add here, when receiving a
-999 "cancelled"
the problem usually is one of two things:manager
object that gets deallocated prematurely. (Create strong reference)hjpotter92 is absolutely right, I just want to provide solution for my case. Hopefully it is useful for you as well. Here is my situation:
On log in page > press log in > pop up loading dialog > call log in service > dismiss dialog > push another screen > call another service --> cause error -999
To fix it, I put a delay between dismissing dialog and pushing new screen:
It is strange that this issue happens on iOS 7 only.
Our company's app has many -999 error in iOS. I have searched around, find the reason has two, like the network task has been dealloc or the certificate isn't valid. But I have checked our code, these two aren't possible. I am using Alamofire which is using URLSession. Luckily, our company's android app's network is normal. So we check the difference. We found the http request from iOS is Http2.0, while android is Http1.1. So we force the backend http support version down to http1.1, then -999 error count descends!!!
I think there maybe some bug in Apple's URLSession. Check the link New NSURLSession for every DataTask overkill? for some detail thoughts
I didn't use Corona SDK's Facebook API but I encountered this problem when using Alamofire, the
secondRequest
always cancel in execution with the error -999, according to the posts I found on internet, the reason is thatsession
property isdeinit
before completion of async work since it is out of the scope, I finally solved this problem bydeinit
the session property manually so the compiler won't deinit it at wrong position: