Hey everyone,
Since the full release notes aren’t available as of this post, and 4.9 Preview 1 is available now, I wanted to let everyone know about a breaking change in 4.9 regarding logging in to Game Center. For those of you following the GitHub master branch, the change is in this commit.
Most of these changes also apply to Google Play Games on Android, so please refer to this thread for anything Android-specific.
Up through 4.8, the iOS online subsystem (if enabled) would automatically start the login process, and potentially show the Game Center login UI, during engine startup - the game had no way of controlling when the UI came up, and in addition, it was causing timing issues in the engine.
To address these problems, in 4.9 the Game Center sign-in process and login UI is no longer triggered automatically at startup. We have implemented the IOnlineExternalUI::ShowLoginUI function for Game Center and added a new Blueprint node, “Show External Login UI”, which wraps this function. The existing “Connect to Service” node has been deprecated and we encourage everyone to switch to using “Show External Login UI” in their Blueprints. This returns control of the login process and UI to the game, so you’re free to activate it at a time that’s appropriate for you. Many games will be able to call it during a BeginPlay event - this will be after the engine has been initialized and any startup movie has finished playing.
Another benefit of this approach is that games will be explicitly notified when the login succeeds (or fails) - for instance, leaderboard- and achievement-related functions will be much more reliable after execution continues past the “On Success” pin!
In addition, we have implemented an “Is Logged In” Blueprint node that will return whether or not the user is logged in to Game Center.
Feel free to post any feedback about these changes here - though for specific bug reports, please post them on AnswerHub!