App exit from AppDelegate.didFinishLaunchingWithOptions before callbacks results and this leads to low level error (ssl error with 9802 or 9806 errors)
I presume you mean negative 9802 and 9806 here. If so, those are
errSSLClosedAbort, which are indeed low-level TLS errors.
I’m mystified why these would result from your app starting async work in
-application:didFinishLaunchingWithOptions:. I can’t think of any way that these would be connected. Certainly that’s not the case when you use the built-in high-level networking APIs, like NSURLSession.
I tried a basic approach base on semaphore to force my App to wait for callback result …
That’s not going to work well even if you sort out the mechanics. You can’t block waiting for the network in
-application:didFinishLaunchingWithOptions:because that blocks your app’s entire UI. Eventually you’ll get killed by the watchdog. QA1693 Synchronous Networking On The Main Thread covers this in depth.
Is there a good parttern to manage such a situation ?
This really depends on whether your app can interact with the user before these requests are complete. If it can, you should just return from
-application:didFinishLaunchingWithOptions:and let the requests complete in the background. If it can’t, then your app should put up a ‘loading’ UI that prevents user interaction (except possibly cancellation) until the requests have complete.
I don’t think this has anything to do with the low-level TLS errors you’re seeing; you’ll need to investigate those separately. To do that I recommend you not run the requests from
-application:didFinishLaunchingWithOptions:but instead add a temporary button to your UI to kick off the requests. One of two things will then happen:
If you still see the low-level TLS errors, you know that you TLS problem.
If not, there’s something very odd going on.
Share and Enjoy
Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware
let myEmail = "eskimo" + "1" + "@apple.com"