Hello everyone,
I’ve been using SDL2 in my app for years. Recently, upon debugging the iOS version of the app on a device, the following message has been displayed in the logs:
CLIENT OF UIKIT REQUIRES UPDATE: This process does not adopt UIScene lifecycle. This will become an assert in a future version.
My understanding is that this is due to the way SDL2 handles the overall iOS lifecycle internally, apparently in a way that is due to being deprecated.
Is this issue solved in SDL3? I haven’t been able to find any information to confirm it.
Or is my understanding not correct and the problem is somewhere else?
In the past, iOS app lifecycle was all handled in one place (the UIApplicationDelegate), where your app’s UI getting hidden meant the whole app was put to sleep.
With all the stuff they’ve been adding for iPad like sidebar apps etc, they split it: stuff purely relating to whether the app’s UI is being hidden / becoming visible etc has been moved to UISceneDelegate. Apple is apparently now requiring all iOS apps to use the UIScene stuff.
SDL2 will probably never adopt UIScene-based lifecycle management since it’s purely in maintenance mode these days.
Unfortunately, it doesn’t look like SDL3 uses UIScene either.
I have no idea how stuff like sidebar apps etc works with games. I haven’t had an iPad since before they added all that, and don’t do iOS development anymore beyond occasionally taking a peek.
edit: Since Apple already looks at what version of the SDK an app was built with to determine how certain things should work, my hope is that they’ll also do this for UIScene-based stuff, so apps that haven’t been updated will still work and the UIScene stuff will just be a requirement for new apps and new versions of existing apps. We’ll see.
As always I react negatively to this, because I cannot migrate my app to SDL3 (it relies on the OpenGL ES 1.1 backend, which is supported in SDL2 but not in SDL3). sdl2-compat is a way forward for me on desktop platforms, but not on Android or iOS.
Thanks for the reply. So does all of this mean that - with the current state of SDL, and assuming Apple will go through with it (even if just for new apps/updates) - iOS might soon become essentially not supported by SDL?