game-centerachievements

Game Center Achievements not displaying achievement localization image for some completed achievements


If I open up the Game Center Achievements view for my app, several of the completed achievement cards fail to display the image set in achievements localization, while other achievements correctly display their image. This is true for iOS 14 through 17.

Additionally, within my app, calls to GKAchievementDescription.loadImage() returns nil for the same achievements missing the image in the Game Center view. This causes a crash on iOS 14.x devices.

Background: App was previously live with 26 achievements, and had no issues - images displayed correctly for all achievements in Game Center, and GKAchievementDescription.loadImage() retrieved these images for all achievements.

I recently published an update to the app, and added 6 new achievements in that update. All 32 achievements show 'Live' in App Store Connect, all have an image set up in the localization section.

A user reached out reporting my app crashed 2-3 seconds after startup on their iOS 14.5 device, after the update. My diagnostics lead to the discovery that GKAchievementDescription.loadImage() was crashing on iOS 14.x for some achievements, due to the missing images. iOS 15 and up do not crash with this call. I then noticed in my Crashlytics that several users were experiencing this early crash, all on iOS 14.x., and then I noticed within the iOS Game Center view of Achievements, some images were also missing, and that set of missing images matched the ones missing from my app calls.

The tricky part is - it's not correlated to the new achievements, some of the missing images are for the previously launched achievements, as well as for 2 of the new achievements. Additionally, I use a set of 6 different images across the 32 achievements, and there is no correlation there either - for a particular image I uploaded for several achievements, it may be visible in one achievement and not in another. The set of images I uploaded were created prior to the initial launch of 26 achievements, and worked and were displayed without issue, and were not changed locally before being added to the 6 new achievements.

It's difficult to know where to begin, as the iOS Game Center view itself does not load these images, although they are configured in App Store Connect and were previously loaded, before the addition of new achievements. I can put a temporary workaround in the app to not make the loadImages call on iOS 14 and below to prevent the crash.

I have tried 're-uploading' the original images to the live achievements, and added a new language localization with the image attached and changed my local language on my device, but this didn't seem to change anything. With Apples caching strategy, it is hard to know how long to 'wait' for that sort of change to propagate. I did additionally try archiving and then un-archiving one of the achievements with an issue - each change was reflected on the device almost real time as the achievement disappeared and reappeared on the list, but still without an image.


Solution

  • This was a result of some inconsistency in the Apple infrastructure. Game Center was logging issues in the console with respect to the missing achievement images not being found on the remote server, despite the achievements being live and localization requiring an image to be so.

    I pushed an app update out (for different reasons) that didn't include any updates to achievements or Game Center and, shortly after the release went live, the issue 'resolved' and the achievement images re-appeared in Game Center and were retrieved via GameKit. I'm assuming the release 'refreshed' the components required for the app.