Create apps that allow players to interact with each other using GameKit.

Posts under GameKit tag

200 Posts

Post

Replies

Boosts

Views

Activity

Game Center matchmaking fails for all non-default users on Apple TV — no IDS registration for secondary users (FB24156316)
Game Center matchmaking fails for all non-default users on Apple TV — no IDS registration for secondary users (FB24156316) On a multi-user Apple TV (tvOS 26.5, Apple TV 4K 3rd gen), Game Center real-time matchmaking fails for every user except the default user, in every app I've tested — including Apple Arcade titles. Filed as FB24156316 with full logs and sysdiagnose; posting here for visibility and in case anyone has shipped multi-user GC multiplayer on tvOS successfully. My game adopts com.apple.developer.user-management (runs-as-current-user-with-user-independent-keychain). The entitlement itself works: on a secondary user's profile the app runs under that user's persona and GKLocalPlayer authenticates as them — the welcome banner shows the right account. But any GKMatchmakerViewController quickmatch hard-fails within ~9 seconds ("Failed to find players"), and accepting an invite fails with GKError 35 ("not signed in to iCloud") even though Settings shows that user's iCloud as signed in. Unified logs show the root cause. When matchmaking starts, gamed can't provision the player's pseudonym because the current user has no identity-services registration: gamed No URI found on any account -- returning nil gamed Failed to fetch pseudonym for local player. Error: GameDaemonCore.PseudonymManagerError.failedToProvision( internalError: Error Domain=com.apple.ids.IDSPseudonymErrorDomain Code=400 "Invalid URI") For the default user, the identical flow succeeds (identityservicesd … resultCode: 0). Across a full day of log capture — profile adds, a remove/re-add, multiple user switches — identityservicesd never once references the secondary users' accounts: registration for them is never attempted, not attempted-and-failed. Meanwhile gamed advertises the nearby-matchmaking Bonjour service with the default user's identity while the foreground app runs as the secondary user. Reproduction matrix: two apps (my shipping game Extreme Violence and Apple Arcade's Crossy Road Castle, which also runs under the correct persona), both sandbox and production Game Center, two unrelated secondary accounts (both healthy elsewhere). Persists across reboot and profile remove/re-add. Default user unaffected. The documentation says the entitlement is all that's needed ("each person who uses your app will have access to… their own Game Center… you don't have to make any code changes" — WWDC20 session 10645). As far as I can tell that promise is currently unfulfillable for online play: there is no API or Settings path that creates the missing IDS registration. Has anyone seen non-default-user matchmaking work on tvOS, on any version? Is there anything an app can do here, or is this purely an OS-side fix? (Related: thread 782163 — a different tvOS matchmaking failure that DTS confirmed as a bug.)
3
0
591
18h
Can't figure out how to get Game Center assets into review
Problem: Unable to Submit for Review Your app’s first achievement must be submitted with a Game Center-enabled app version. Your app’s first leaderboard must be submitted with a Game Center-enabled app version. To submit your items for review, add an app version for the selected platform. What I've done Created TestFlight builds Created release builds Run the game through to completion and triggered all achievements/leaderboards with those builds. Set up Game Center with proper app version information for all platforms. Do I have to submit it for a release review while I'm still trying to develop the GameKit parts?
0
0
43
1d
Archived achievements
Hi! With my next update i want to archive 6 of my 18 achievements, and add 7 new ones. I've archived the 6, and added the 7 new ones, but i can distritibute any points due to the archived 6 still holding the active point amount. It's been about 12 hours since i archived them, so do i just wait another 12 hours or is there a better way ?
4
0
483
Jul ’26
Xcode 26 – "Manage Game Progress" not showing achievements/leaderboards on macOS
Hello, When testing GameKit "Manage Game Progress" in Xcode 26: On iOS devices, achievements, leaderboards, and party code data display and work correctly. On macOS devices, none of these data appear in "Manage Game Progress." Is this a known issue with macOS GameKit, or is there a limitation compared to iOS? If it is not a bug, is there any additional configuration needed to make achievements and leaderboards visible on macOS? I also included the GameKit bundle in my macOS app and enabled Enable Debug Mode in GameKit Configuration in the scheme options. Thank you.
4
1
1.2k
Jul ’26
App terminated by watchdog due to hang in Game Center authentication.
Hi, We are seeing watchdog-terminated app hangs reported by users on iOS 26. The hang occurs during cold launch when we set the Game Center authenticate handler. Our usage is straightforward — we follow the official guide: to set the handler once in the boot flow. localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){//handler code} The app never reaches our handler code. Instead, it is killed by the watchdog before the handler is invoked. Root Cause: We believe the root cause is GKDaemonProxy localPlayerAgeCategory makes a synchronous XPC call ( xpc_connection_send_message_with_reply_sync ) to the Game Center daemon ( com.apple.gamed ). The daemon does not respond, blocking the main thread indefinitely until the watchdog terminates the app. Also we haven't seen this before iOS 26. Reproduction Conditions: Unfortunately we don't have a consistent way to reproduce it. It happens intermittently. And I can't share the iOS build due to company requirements. I have pasted the stack trace below (all users report the similar stack tracks). Stack trace (representative, reported consistently across affected users): App Hang: The app was terminated while unresponsive 0 libsystem_kernel.dylib +0xcd0 _mach_msg2_trap 1 libsystem_kernel.dylib +0x4308 _mach_msg2_internal 2 libsystem_kernel.dylib +0x4228 _mach_msg_overwrite 3 libsystem_kernel.dylib +0x4074 _mach_msg 4 libdispatch.dylib +0x1c980 __dispatch_mach_send_and_wait_for_reply 5 libdispatch.dylib +0x1cd20 _dispatch_mach_send_with_result_and_wait_for_reply 6 libxpc.dylib +0x11ed8 _xpc_connection_send_message_with_reply_sync 7 Foundation +0x41710 ___NSXPCCONNECTION_IS_WAITING_FOR_A_SYNCHRONOUS_REPLY__ 8 Foundation +0x29068 -[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:] 9 Foundation +0x69b7c -[NSXPCConnection _sendSelector:withProxy:arg1:] 10 Foundation +0x699e8 __NSXPCDistantObjectSimpleMessageSend1 11 GameCenterFoundation +0x986fc ___39-[GKDaemonProxy localPlayerAgeCategory]_block_invoke.109 12 GameCenterFoundation +0x1397d0 0x22cbde7d0 (0x22cbde794 + 60) 13 GameCenterFoundation +0x139610 0x22cbde610 (0x22cbde508 + 264) 14 GameCenterFoundation +0x139770 0x22cbde770 (0x22cbde6ec + 132) 15 GameCenterFoundation +0x98420 -[GKDaemonProxy localPlayerAgeCategory] 16 GameCenterFoundation +0x2ceb4 -[GKClientPreferencesSupport localPlayerAgeCategory] 17 GameCenterFoundation +0x93ba4 -[GKPreferences(AgeCategoryRestrictions) localPlayerAgeCategory] 18 GameCenterFoundation +0x93c34 -[GKPreferences(AgeCategoryRestrictions) getRestrictionLimitForLocalPlayer:] 19 GameCenterFoundation +0x93cd0 -[GKPreferences(AgeCategoryRestrictions) clampBoolRestriction:tableEntry:] 20 GameCenterFoundation +0x93d40 -[GKPreferences(AgeCategoryRestrictions) isBoolValueRestricted:tableEntry:] 21 GameCenterFoundation +0x9f7b8 -[GKPreferences(Restrictions) isBoolKeyRestricted:category:] 22 GameCenterUICore +0x2d04 -[GKLocalPlayerAuthenticator _authenticateUsingAuthUI:authenticationResults:usernameEditable:authUIDismissHandler:completionHandler:] 23 GameCenterUICore +0xd638 ___106-[GKLocalPlayer(AuthenticationPrivate) startAuthenticationForExistingPrimaryPlayerUponReturnToForeground:]_block_invoke 24 libsystem_trace.dylib +0xdb40 _os_activity_apply_f 25 GameCenterFoundation +0x181f4 -[GKActivity execute:] 26 GameCenterFoundation +0x18138 +[GKActivity named:execute:] 27 GameCenterUICore +0xd528 -[GKLocalPlayer(AuthenticationPrivate) startAuthenticationForExistingPrimaryPlayerUponReturnToForeground:] 28 libsystem_trace.dylib +0xdb40 _os_activity_apply_f 29 GameCenterFoundation +0x181f4 -[GKActivity execute:] 30 GameCenterFoundation +0x18138 +[GKActivity named:execute:] 31 GameCenterFoundation +0x4f124 ___40-[GKLocalPlayer setAuthenticateHandler:]_block_invoke 32 libdispatch.dylib +0x1b1e0 __dispatch_client_callout 33 libdispatch.dylib +0x45ac __dispatch_once_callout 34 GameCenterFoundation +0x4f070 -[GKLocalPlayer setAuthenticateHandler:] Additional Notes: This issue was not observed prior to iOS 26. We have no reports of this on iOS 17 or iOS 18. We are unable to share a build due to company policy. We cannot reproduce this consistently — it occurs intermittently in production. All affected users report the same stack trace pattern.
4
7
1.1k
Jul ’26
-1003 error when reporting or loading achievements in Unity app
Hello, I'm building an unreleased game and testing it on both iOS 26.5.2 and iOS 27.0 Developer Beta, and getting the same error when trying to interact with GameKit. It doesn't seem to matter whether the game is deployed directly through Xcode or Testflight. The local player authenticates properly upon booting the game, but when trying to claim an achievement using the following code: try { var inProgressAchievements = await GKAchievement.LoadAchievements(); var gkAchievement = inProgressAchievements.FirstOrDefault(ach => ach.Identifier == "NEW_CASE"); if (gkAchievement == null) gkAchievement = GKAchievement.Init("NEW_CASE"); gkAchievement.PercentComplete = 100; await GKAchievement.Report(gkAchievement); } catch (GameKitException e) { Debug.LogError($"Failed to report achievement {achievement.IOSAchievementID}, error {e.Code} : {e.Message}"); } I get the following error: [Platform] [21.598] Failed to report achievement NEW_CASE, error -1003 : Code=-1003 Domain=NSURLErrorDomain Description=Aucun serveur ayant le nom d’hôte précisé n’a été détecté. Manavoid.Core.<<UnlockAchievement>gDoAsync|0>d:MoveNext() (at ./Library/PackageCache/com.manavoid.core@824a3b70b55f/Runtime/Platform/IOSSubsystem.cs:69) Apple.GameKit.GKAchievement:OnLoadAchievementsError(Int64, IntPtr) (at ./Library/PackageCache/com.apple.unityplugin.gamekit@1ebe01ff0665/Source/GKAchievement.cs:139) [Platform] [21.59859] Failed to report achievement , error -1003 : Code=-1003 Domain=NSURLErrorDomain Description=Aucun serveur ayant le nom d’hôte précisé n’a été détecté. Manavoid.Core.<<UnlockAchievement>gDoAsync|0>d:MoveNext() (at ./Library/PackageCache/com.manavoid.core@824a3b70b55f/Runtime/Platform/IOSSubsystem.cs:69) Apple.GameKit.GKAchievement:OnLoadAchievementsError(Int64, IntPtr) (at ./Library/PackageCache/com.apple.unityplugin.gamekit@1ebe01ff0665/Source/GKAchievement.cs:139) I currently have 18 achievements set up in Game Center. Some of them are still strictly IDs and have no localization data or artwork yet, if that matters. Opening the Game Center overlay in-game works, but I can't see any achievements listed. I did manage to see them once (with missing localization as expected), but I couldn't reproduce it consistently, most of the time Game Center simply says "0 out of 0 achievements". My Testflight build metadata looks like this: ***.app*** application-identifier: **********.com.***.*** get-task-allow: false beta-reports-active: true com.apple.developer.team-identifier: ********** com.apple.developer.game-center: true Help!
1
0
505
Jul ’26
Game Center Missing for iMessage Extensions
I have enabled Game Center in App Store Connect, as well as the entitlements in Xcode for both my parent (stub) target and extension target. I call the Game Center authentication function which returns a "Signed in as: [my username]" banner during testing. However, when it is tapped on by the user, it opens the Game Center view where "Now Playing _" shows a blank title and app icon. I have a full size app icon that App Store Connect and even GameKit recognizes (https://games.apple.com/us/game/6757935828) but not when I actually run my iMessage app. When I call the authentication function, it completes (hence the banner), but then says later on Game Center does not recognize my app and that my achievements cannot be reported to Game Center. Is Game Center fully disabled for iMessage apps? Or is there a solution I am missing? My goal is to have achievement banners show up for winning iMessage games and certain gameplay combos.
1
0
614
Jun ’26
GameCenter sometimes not working on iPadOS 26.5
We are investigating a Game Center authentication issue that appears to affect some devices consistently. Symptoms: Game Center authentication initiated from our app does not complete. The GKLocalPlayer authentication flow does not recover during the session. The issue is not limited to our app: on affected devices, the Game Center section in the iOS/iPadOS Settings app also fails to load. The Games app also fails to load. After a device restart, Game Center may work once, but then becomes unavailable again and further authentication attempts fail. We have reproduced this on iPadOS 26.5. In addition, our analytics show an unusually high percentage of unfinished Game Center authentication attempts on this OS version. We have also received individual reports from users on other devices/OS versions. Given that the Game Center Settings screen and the Games app are also affected, this appears to be a system-level Game Center availability problem rather than an issue isolated to our application. There is a description of a similar problem https://developer.apple.com/forums/thread/787749 But it belongs to beta testing and is marked as fixed.
1
2
778
Jun ’26
Blurry Game Center Achievement Images?
Hey all — I’ve been building out my first set of Game Center Achievements for a game I’m working on, and I’ve run into something odd with the image quality. The specs say to upload icons at 512x512 or 1024x1024@2x. I’ve been uploading 1024x1024 PNGs (without explicitly naming them “@2x” since there’s only one upload slot), assuming that Game Center would just handle the scaling automatically — kind of like how a lot of things are getting more streamlined across platforms lately. But in testing, the icons are showing up a bit blurry, especially in the Game Center interface. It’s not horrible, but it’s definitely softer than I expected — more like low-res than Retina. All my test devices (outside the Simulator) are running iOS 26, so I’m also wondering if this might be a beta-related display bug? Has anyone else run into this? Curious if I’m missing a best practice here, or if I really do need to ensure I’m uploading it with the @2x suffix, or maybe something else entirely? Thanks!
3
1
1.6k
Jun ’26
Setting GKLocalPlayer.local.authenticateHandler may cause whole window to be obfuscated by alert "No Internet Connection"
My game supports both GameCenter, setting up a custom host and local games against bots. To log in to GameCenter and be able to handle invitations from other players, I set GKLocalPlayer.local.authenticateHandler after the app finished loading. But it seems that whenever I’m disconnected from the internet for more than 24 hours, setting GKLocalPlayer.local.authenticateHandler causes the whole window to be obfuscated by an alert telling me that I have no internet connection. When this happens, if I connect to the internet and disconnect again, the alert is not shown anymore. This is a huge problem because the alert prevents a user from using any other feature of the app unrelated to GameCenter, since there's no way to dismiss it. Is this really intended behaviour or how is a user supposed to continue using the app that supports GameCenter and does not rely on it, while being disconnected from the internet? I created FB22951946.
3
0
626
Jun ’26
IAP
My auto-renewable subscription products are approved in App Store Connect, but fetchProducts() returns 0 products when testing in Production & Testflight. Debug output shows: "products.size is 0 - no products fetched! Expected 6 products." All my business agreements are active. Has anyone faced this before? What do you recommend? Thank you.
0
0
366
May ’26
Questions regarding Guidelines 5.1.1, 4.5.3, and 4.5.5 for cross-save and custom backend integration
Hello, I am developing an macOS app and planning to implement a cross-platform save feature. I have two questions regarding the App Store Review Guidelines and Game Center integration. 1. Requiring Game Center exclusively for an optional "Cross-Save" feature (Guideline 5.1.1 & HIG) in macOS To comply with Guideline 5.1.1(v), we do not force users to sign in to Game Center upon app launch. Users can fully access the core features, play locally, and even use standard iCloud sync without any Game Center authentication. However, to use the specific, optional "Cross-Save" feature (which syncs data across different platforms via our proprietary backend), we intend to require Game Center login. Question: Is it acceptable to prompt for and require Game Center authentication only when the user explicitly tries to enable this specific cross-save feature? 2. Associating Game Center IDs with a proprietary backend account (Guidelines 4.5.3 & 4.5.5) To facilitate cross-progression, our backend server plans to authenticate the user using Game Center's identity verification signature via fetchItems(forIdentityVerificationSignature:). Once authenticated, we want to link the user's Game Center ID (specifically, teamPlayerID or gamePlayerID) to our proprietary service account in our own database. Question: Guidelines 4.5.3 and 4.5.5 state that we should not share Player IDs with "any third party." Does storing and linking the Game Center ID to our own backend server account (strictly to manage our game's cross-saves) fall under this "third party" restriction, or is our proprietary backend considered a permitted, first-party use? I want to ensure our implementation fully complies with Apple's privacy and user experience standards. Any insights would be greatly appreciated. Thank you.
1
0
395
May ’26
GKLeaderboard.submitScore succeeds in development but no production users appear on leaderboard
I'm building an iOS word game (Gramfall) and no production App Store users can see their own scores on any leaderboard, despite Game Center authentication succeeding and no errors being thrown. The same code works correctly in development and all 6 leaderboard submissions fire "Score submitted" notifications on my dev device. 6 leaderboards in App Store Connect (3 Classic all-time, 3 Recurring monthly) and all are Live Production App Store users: authenticated, scores submitted, no errors — scores never appear Development build: all 6 submissions confirmed via Settings → Developer → Notify About Score Submissions Affected users cannot see their own score on the leaderboard from their own device. This rules out privacy/visibility restrictions as a player should always see their own score. This suggests submissions are either silently failing or being accepted but not recorded in the production Game Center environment. What we have ruled out Leaderboard ID mismatch (Everything in App Store Connect matches) Authentication failure (GKLocalPlayer.local.isAuthenticated is true, app shows "Connected") All 6 leaderboards load with releaseState(rawValue: 1), isHidden: false Account-level restrictions effectively ruled out as it affects all users, not one account endGame() fires correctly, confirmed in dev Questions Is there a known difference in how GKLeaderboard.submitScore behaves between the sandbox and production Game Center environments that could cause silent failures? Is there any way for a submission to return no error yet still not be recorded in production? Code func submitGameResult(timeSeconds: Int, score: Int, longestWordLength: Int) { guard GKLocalPlayer.local.isAuthenticated else { return } Task { do { try await GKLeaderboard.submitScore(timeSeconds, context: 0, player: GKLocalPlayer.local, leaderboardIDs: ["gramfall.lb.time", "gramfall.lb.time.monthly"]) try await GKLeaderboard.submitScore(score, context: 0, player: GKLocalPlayer.local, leaderboardIDs: ["gramfall.lb.score", "gramfall.lb.score.monthly"]) try await GKLeaderboard.submitScore(longestWordLength, context: 0, player: GKLocalPlayer.local, leaderboardIDs: ["gramfall.lb.longestword", "gramfall.lb.longestword.monthly"]) } catch { print("[GameCenter] submitGameResult failed: \(error)") } } }
0
0
1.3k
Apr ’26
انشاء تطبيق جديد
اريد انشاء لعبه في ابل ستور و تكون اول صفحه تكون شروط و الاحكام و خيار بدا اللعبه200 فئات من السعوديه من مسلسل من العب من بنات و بس وقطر و الإمارات وانمي ومسلسلات تركيه و السياحه و الدول وشركات عالميه و شركات كترونيه
3
0
747
Mar ’26
Clarifying when Game Center activity events fire relative to authentication
Hello, In our game we enforce an age gate before showing Game Center sign‑in. Only after the user passes the age gate do we call GKLocalPlayer.localPlayer.authenticateHandler. The reason I’m asking is that we want to reliably detect if the game was launched from a Game Center activity in the Games app (iOS 26+). If the user prefers to enter via activities, we don’t want to miss that event during cold start. Our current proposal is: Register a GKLocalPlayerListener early in didFinishLaunchingWithOptions: so the app is ready to catch events. Queue any incoming events in our dispatcher. Only process those events after the user passes the age gate and authentication succeeds. My questions are: Does player:wantsToPlayGameActivity:completionHandler: ever fire before authentication, or only after the local player is authenticated? If it only fires after authentication, is our “register early but gate processing” approach the correct way to ensure we don’t miss activity launches? Is there any recommended pattern to distinguish “activity launch” vs. “normal launch” in this age‑gate scenario? We want to respect Apple’s age gate requirements, but also ensure activity launches are not lost if the user prefers that entry point. Sorry if this is a stupid question — I just want to be sure we’re following the right pattern. Thanks for any clarification or best‑practice guidance!
3
0
1.5k
Feb ’26
GKLocalPlayer.authenticateHandler not called on iOS 26 when Game Center auth overlay is shown
Hi — we’re testing our app on iOS 26 and ran into strange behavior with GKLocalPlayer.local.authenticateHandler. GKLocalPlayer.local.authenticateHandler = { [weak self] viewController, error in // additional code } What happens: When we assign authenticateHandler on iOS 26 and the user is not signed in to Game Center, the system shows a full-screen Game Center overlay asking the user to sign in. If the user taps Cancel, nothing further happens — the closure is not invoked again, so we don’t receive an error or any callback. The app never learns whether the auth was cancelled or failed. In previous iOS versions the closure was called (with viewController / error as appropriate) and the flow worked as expected. What we tried: Verified authenticateHandler is being set. Checked GKLocalPlayer.local.isAuthenticated after the overlay dismisses — it’s unchanged. Observed system logs: a com.apple.GameOverlayUI scene is created and later removed (so the auth overlay is shown by the system). Confirmed the same code works on earlier iOS versions. :thinking: Question: Has anyone seen authenticateHandler not being invoked on iOS 26 when the Game Center auth overlay is presented? Could this be a behavioral change in iOS 26 (overlay runs in a separate system process), or a bug? Any suggested workarounds to reliably detect that the user cancelled the sign-in (for example: listening for willResignActive / didBecomeActive, watching for a system overlay, or saving/presenting the viewController manually)? Thanks in advance for any advice — we’d appreciate pointers or suggested diagnostics ?
11
4
3.1k
Feb ’26
Transferring Apps with iCloud KVS
Hi All! I'm being asked to migrate an app which utilizes iCloud KVS (Key Value Storage). This ability is a new-ish feature, and the documentation about this is sparse [1]. Honestly, the entire documentation about the new iCloud transfer functionality seems to be missing. Same with Game Center / GameKit. While the docs say that it should work, I'd like to understand the process in more detail. Has anyone migrated an iCloud KVS app? What happens after the transfer goes through, but before the first release? Do I need to do anything special? I see that the Entitlements file has the TeamID in the Key Value store - is that fine? <key>com.apple.developer.ubiquity-kvstore-identifier</key> <string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string> Can someone please share their experience? Thank you! [1] https://developer.apple.com/help/app-store-connect/transfer-an-app/overview-of-app-transfer
5
0
3.1k
Feb ’26
Present GameCentre Overlay Programmatically
As GKGameCenterViewController has been deprecated, it seems that GKAccessPoint is now the correct way to present the GameCentre leaderboard. But the placement options for the GKAccessPoint are very limited and lead to misaligned UI that looks clunky, as the GKAccessPoint does not align with the system navigation toolbar. Am I missing something here or am I just stuck with a lopsided UI now? I much preferred how this previously worked, where I could present the GKGameCenterViewController in a sheet from my own button
1
0
816
Feb ’26
Game Center matchmaking fails for all non-default users on Apple TV — no IDS registration for secondary users (FB24156316)
Game Center matchmaking fails for all non-default users on Apple TV — no IDS registration for secondary users (FB24156316) On a multi-user Apple TV (tvOS 26.5, Apple TV 4K 3rd gen), Game Center real-time matchmaking fails for every user except the default user, in every app I've tested — including Apple Arcade titles. Filed as FB24156316 with full logs and sysdiagnose; posting here for visibility and in case anyone has shipped multi-user GC multiplayer on tvOS successfully. My game adopts com.apple.developer.user-management (runs-as-current-user-with-user-independent-keychain). The entitlement itself works: on a secondary user's profile the app runs under that user's persona and GKLocalPlayer authenticates as them — the welcome banner shows the right account. But any GKMatchmakerViewController quickmatch hard-fails within ~9 seconds ("Failed to find players"), and accepting an invite fails with GKError 35 ("not signed in to iCloud") even though Settings shows that user's iCloud as signed in. Unified logs show the root cause. When matchmaking starts, gamed can't provision the player's pseudonym because the current user has no identity-services registration: gamed No URI found on any account -- returning nil gamed Failed to fetch pseudonym for local player. Error: GameDaemonCore.PseudonymManagerError.failedToProvision( internalError: Error Domain=com.apple.ids.IDSPseudonymErrorDomain Code=400 "Invalid URI") For the default user, the identical flow succeeds (identityservicesd … resultCode: 0). Across a full day of log capture — profile adds, a remove/re-add, multiple user switches — identityservicesd never once references the secondary users' accounts: registration for them is never attempted, not attempted-and-failed. Meanwhile gamed advertises the nearby-matchmaking Bonjour service with the default user's identity while the foreground app runs as the secondary user. Reproduction matrix: two apps (my shipping game Extreme Violence and Apple Arcade's Crossy Road Castle, which also runs under the correct persona), both sandbox and production Game Center, two unrelated secondary accounts (both healthy elsewhere). Persists across reboot and profile remove/re-add. Default user unaffected. The documentation says the entitlement is all that's needed ("each person who uses your app will have access to… their own Game Center… you don't have to make any code changes" — WWDC20 session 10645). As far as I can tell that promise is currently unfulfillable for online play: there is no API or Settings path that creates the missing IDS registration. Has anyone seen non-default-user matchmaking work on tvOS, on any version? Is there anything an app can do here, or is this purely an OS-side fix? (Related: thread 782163 — a different tvOS matchmaking failure that DTS confirmed as a bug.)
Replies
3
Boosts
0
Views
591
Activity
18h
Can't figure out how to get Game Center assets into review
Problem: Unable to Submit for Review Your app’s first achievement must be submitted with a Game Center-enabled app version. Your app’s first leaderboard must be submitted with a Game Center-enabled app version. To submit your items for review, add an app version for the selected platform. What I've done Created TestFlight builds Created release builds Run the game through to completion and triggered all achievements/leaderboards with those builds. Set up Game Center with proper app version information for all platforms. Do I have to submit it for a release review while I'm still trying to develop the GameKit parts?
Replies
0
Boosts
0
Views
43
Activity
1d
Archived achievements
Hi! With my next update i want to archive 6 of my 18 achievements, and add 7 new ones. I've archived the 6, and added the 7 new ones, but i can distritibute any points due to the archived 6 still holding the active point amount. It's been about 12 hours since i archived them, so do i just wait another 12 hours or is there a better way ?
Replies
4
Boosts
0
Views
483
Activity
Jul ’26
Xcode 26 – "Manage Game Progress" not showing achievements/leaderboards on macOS
Hello, When testing GameKit "Manage Game Progress" in Xcode 26: On iOS devices, achievements, leaderboards, and party code data display and work correctly. On macOS devices, none of these data appear in "Manage Game Progress." Is this a known issue with macOS GameKit, or is there a limitation compared to iOS? If it is not a bug, is there any additional configuration needed to make achievements and leaderboards visible on macOS? I also included the GameKit bundle in my macOS app and enabled Enable Debug Mode in GameKit Configuration in the scheme options. Thank you.
Replies
4
Boosts
1
Views
1.2k
Activity
Jul ’26
App terminated by watchdog due to hang in Game Center authentication.
Hi, We are seeing watchdog-terminated app hangs reported by users on iOS 26. The hang occurs during cold launch when we set the Game Center authenticate handler. Our usage is straightforward — we follow the official guide: to set the handler once in the boot flow. localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){//handler code} The app never reaches our handler code. Instead, it is killed by the watchdog before the handler is invoked. Root Cause: We believe the root cause is GKDaemonProxy localPlayerAgeCategory makes a synchronous XPC call ( xpc_connection_send_message_with_reply_sync ) to the Game Center daemon ( com.apple.gamed ). The daemon does not respond, blocking the main thread indefinitely until the watchdog terminates the app. Also we haven't seen this before iOS 26. Reproduction Conditions: Unfortunately we don't have a consistent way to reproduce it. It happens intermittently. And I can't share the iOS build due to company requirements. I have pasted the stack trace below (all users report the similar stack tracks). Stack trace (representative, reported consistently across affected users): App Hang: The app was terminated while unresponsive 0 libsystem_kernel.dylib +0xcd0 _mach_msg2_trap 1 libsystem_kernel.dylib +0x4308 _mach_msg2_internal 2 libsystem_kernel.dylib +0x4228 _mach_msg_overwrite 3 libsystem_kernel.dylib +0x4074 _mach_msg 4 libdispatch.dylib +0x1c980 __dispatch_mach_send_and_wait_for_reply 5 libdispatch.dylib +0x1cd20 _dispatch_mach_send_with_result_and_wait_for_reply 6 libxpc.dylib +0x11ed8 _xpc_connection_send_message_with_reply_sync 7 Foundation +0x41710 ___NSXPCCONNECTION_IS_WAITING_FOR_A_SYNCHRONOUS_REPLY__ 8 Foundation +0x29068 -[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:] 9 Foundation +0x69b7c -[NSXPCConnection _sendSelector:withProxy:arg1:] 10 Foundation +0x699e8 __NSXPCDistantObjectSimpleMessageSend1 11 GameCenterFoundation +0x986fc ___39-[GKDaemonProxy localPlayerAgeCategory]_block_invoke.109 12 GameCenterFoundation +0x1397d0 0x22cbde7d0 (0x22cbde794 + 60) 13 GameCenterFoundation +0x139610 0x22cbde610 (0x22cbde508 + 264) 14 GameCenterFoundation +0x139770 0x22cbde770 (0x22cbde6ec + 132) 15 GameCenterFoundation +0x98420 -[GKDaemonProxy localPlayerAgeCategory] 16 GameCenterFoundation +0x2ceb4 -[GKClientPreferencesSupport localPlayerAgeCategory] 17 GameCenterFoundation +0x93ba4 -[GKPreferences(AgeCategoryRestrictions) localPlayerAgeCategory] 18 GameCenterFoundation +0x93c34 -[GKPreferences(AgeCategoryRestrictions) getRestrictionLimitForLocalPlayer:] 19 GameCenterFoundation +0x93cd0 -[GKPreferences(AgeCategoryRestrictions) clampBoolRestriction:tableEntry:] 20 GameCenterFoundation +0x93d40 -[GKPreferences(AgeCategoryRestrictions) isBoolValueRestricted:tableEntry:] 21 GameCenterFoundation +0x9f7b8 -[GKPreferences(Restrictions) isBoolKeyRestricted:category:] 22 GameCenterUICore +0x2d04 -[GKLocalPlayerAuthenticator _authenticateUsingAuthUI:authenticationResults:usernameEditable:authUIDismissHandler:completionHandler:] 23 GameCenterUICore +0xd638 ___106-[GKLocalPlayer(AuthenticationPrivate) startAuthenticationForExistingPrimaryPlayerUponReturnToForeground:]_block_invoke 24 libsystem_trace.dylib +0xdb40 _os_activity_apply_f 25 GameCenterFoundation +0x181f4 -[GKActivity execute:] 26 GameCenterFoundation +0x18138 +[GKActivity named:execute:] 27 GameCenterUICore +0xd528 -[GKLocalPlayer(AuthenticationPrivate) startAuthenticationForExistingPrimaryPlayerUponReturnToForeground:] 28 libsystem_trace.dylib +0xdb40 _os_activity_apply_f 29 GameCenterFoundation +0x181f4 -[GKActivity execute:] 30 GameCenterFoundation +0x18138 +[GKActivity named:execute:] 31 GameCenterFoundation +0x4f124 ___40-[GKLocalPlayer setAuthenticateHandler:]_block_invoke 32 libdispatch.dylib +0x1b1e0 __dispatch_client_callout 33 libdispatch.dylib +0x45ac __dispatch_once_callout 34 GameCenterFoundation +0x4f070 -[GKLocalPlayer setAuthenticateHandler:] Additional Notes: This issue was not observed prior to iOS 26. We have no reports of this on iOS 17 or iOS 18. We are unable to share a build due to company policy. We cannot reproduce this consistently — it occurs intermittently in production. All affected users report the same stack trace pattern.
Replies
4
Boosts
7
Views
1.1k
Activity
Jul ’26
-1003 error when reporting or loading achievements in Unity app
Hello, I'm building an unreleased game and testing it on both iOS 26.5.2 and iOS 27.0 Developer Beta, and getting the same error when trying to interact with GameKit. It doesn't seem to matter whether the game is deployed directly through Xcode or Testflight. The local player authenticates properly upon booting the game, but when trying to claim an achievement using the following code: try { var inProgressAchievements = await GKAchievement.LoadAchievements(); var gkAchievement = inProgressAchievements.FirstOrDefault(ach => ach.Identifier == "NEW_CASE"); if (gkAchievement == null) gkAchievement = GKAchievement.Init("NEW_CASE"); gkAchievement.PercentComplete = 100; await GKAchievement.Report(gkAchievement); } catch (GameKitException e) { Debug.LogError($"Failed to report achievement {achievement.IOSAchievementID}, error {e.Code} : {e.Message}"); } I get the following error: [Platform] [21.598] Failed to report achievement NEW_CASE, error -1003 : Code=-1003 Domain=NSURLErrorDomain Description=Aucun serveur ayant le nom d’hôte précisé n’a été détecté. Manavoid.Core.<<UnlockAchievement>gDoAsync|0>d:MoveNext() (at ./Library/PackageCache/com.manavoid.core@824a3b70b55f/Runtime/Platform/IOSSubsystem.cs:69) Apple.GameKit.GKAchievement:OnLoadAchievementsError(Int64, IntPtr) (at ./Library/PackageCache/com.apple.unityplugin.gamekit@1ebe01ff0665/Source/GKAchievement.cs:139) [Platform] [21.59859] Failed to report achievement , error -1003 : Code=-1003 Domain=NSURLErrorDomain Description=Aucun serveur ayant le nom d’hôte précisé n’a été détecté. Manavoid.Core.<<UnlockAchievement>gDoAsync|0>d:MoveNext() (at ./Library/PackageCache/com.manavoid.core@824a3b70b55f/Runtime/Platform/IOSSubsystem.cs:69) Apple.GameKit.GKAchievement:OnLoadAchievementsError(Int64, IntPtr) (at ./Library/PackageCache/com.apple.unityplugin.gamekit@1ebe01ff0665/Source/GKAchievement.cs:139) I currently have 18 achievements set up in Game Center. Some of them are still strictly IDs and have no localization data or artwork yet, if that matters. Opening the Game Center overlay in-game works, but I can't see any achievements listed. I did manage to see them once (with missing localization as expected), but I couldn't reproduce it consistently, most of the time Game Center simply says "0 out of 0 achievements". My Testflight build metadata looks like this: ***.app*** application-identifier: **********.com.***.*** get-task-allow: false beta-reports-active: true com.apple.developer.team-identifier: ********** com.apple.developer.game-center: true Help!
Replies
1
Boosts
0
Views
505
Activity
Jul ’26
Game Center Missing for iMessage Extensions
I have enabled Game Center in App Store Connect, as well as the entitlements in Xcode for both my parent (stub) target and extension target. I call the Game Center authentication function which returns a "Signed in as: [my username]" banner during testing. However, when it is tapped on by the user, it opens the Game Center view where "Now Playing _" shows a blank title and app icon. I have a full size app icon that App Store Connect and even GameKit recognizes (https://games.apple.com/us/game/6757935828) but not when I actually run my iMessage app. When I call the authentication function, it completes (hence the banner), but then says later on Game Center does not recognize my app and that my achievements cannot be reported to Game Center. Is Game Center fully disabled for iMessage apps? Or is there a solution I am missing? My goal is to have achievement banners show up for winning iMessage games and certain gameplay combos.
Replies
1
Boosts
0
Views
614
Activity
Jun ’26
GameCenter sometimes not working on iPadOS 26.5
We are investigating a Game Center authentication issue that appears to affect some devices consistently. Symptoms: Game Center authentication initiated from our app does not complete. The GKLocalPlayer authentication flow does not recover during the session. The issue is not limited to our app: on affected devices, the Game Center section in the iOS/iPadOS Settings app also fails to load. The Games app also fails to load. After a device restart, Game Center may work once, but then becomes unavailable again and further authentication attempts fail. We have reproduced this on iPadOS 26.5. In addition, our analytics show an unusually high percentage of unfinished Game Center authentication attempts on this OS version. We have also received individual reports from users on other devices/OS versions. Given that the Game Center Settings screen and the Games app are also affected, this appears to be a system-level Game Center availability problem rather than an issue isolated to our application. There is a description of a similar problem https://developer.apple.com/forums/thread/787749 But it belongs to beta testing and is marked as fixed.
Replies
1
Boosts
2
Views
778
Activity
Jun ’26
Blurry Game Center Achievement Images?
Hey all — I’ve been building out my first set of Game Center Achievements for a game I’m working on, and I’ve run into something odd with the image quality. The specs say to upload icons at 512x512 or 1024x1024@2x. I’ve been uploading 1024x1024 PNGs (without explicitly naming them “@2x” since there’s only one upload slot), assuming that Game Center would just handle the scaling automatically — kind of like how a lot of things are getting more streamlined across platforms lately. But in testing, the icons are showing up a bit blurry, especially in the Game Center interface. It’s not horrible, but it’s definitely softer than I expected — more like low-res than Retina. All my test devices (outside the Simulator) are running iOS 26, so I’m also wondering if this might be a beta-related display bug? Has anyone else run into this? Curious if I’m missing a best practice here, or if I really do need to ensure I’m uploading it with the @2x suffix, or maybe something else entirely? Thanks!
Replies
3
Boosts
1
Views
1.6k
Activity
Jun ’26
Setting GKLocalPlayer.local.authenticateHandler may cause whole window to be obfuscated by alert "No Internet Connection"
My game supports both GameCenter, setting up a custom host and local games against bots. To log in to GameCenter and be able to handle invitations from other players, I set GKLocalPlayer.local.authenticateHandler after the app finished loading. But it seems that whenever I’m disconnected from the internet for more than 24 hours, setting GKLocalPlayer.local.authenticateHandler causes the whole window to be obfuscated by an alert telling me that I have no internet connection. When this happens, if I connect to the internet and disconnect again, the alert is not shown anymore. This is a huge problem because the alert prevents a user from using any other feature of the app unrelated to GameCenter, since there's no way to dismiss it. Is this really intended behaviour or how is a user supposed to continue using the app that supports GameCenter and does not rely on it, while being disconnected from the internet? I created FB22951946.
Replies
3
Boosts
0
Views
626
Activity
Jun ’26
IAP
My auto-renewable subscription products are approved in App Store Connect, but fetchProducts() returns 0 products when testing in Production & Testflight. Debug output shows: "products.size is 0 - no products fetched! Expected 6 products." All my business agreements are active. Has anyone faced this before? What do you recommend? Thank you.
Replies
0
Boosts
0
Views
366
Activity
May ’26
Questions regarding Guidelines 5.1.1, 4.5.3, and 4.5.5 for cross-save and custom backend integration
Hello, I am developing an macOS app and planning to implement a cross-platform save feature. I have two questions regarding the App Store Review Guidelines and Game Center integration. 1. Requiring Game Center exclusively for an optional "Cross-Save" feature (Guideline 5.1.1 & HIG) in macOS To comply with Guideline 5.1.1(v), we do not force users to sign in to Game Center upon app launch. Users can fully access the core features, play locally, and even use standard iCloud sync without any Game Center authentication. However, to use the specific, optional "Cross-Save" feature (which syncs data across different platforms via our proprietary backend), we intend to require Game Center login. Question: Is it acceptable to prompt for and require Game Center authentication only when the user explicitly tries to enable this specific cross-save feature? 2. Associating Game Center IDs with a proprietary backend account (Guidelines 4.5.3 & 4.5.5) To facilitate cross-progression, our backend server plans to authenticate the user using Game Center's identity verification signature via fetchItems(forIdentityVerificationSignature:). Once authenticated, we want to link the user's Game Center ID (specifically, teamPlayerID or gamePlayerID) to our proprietary service account in our own database. Question: Guidelines 4.5.3 and 4.5.5 state that we should not share Player IDs with "any third party." Does storing and linking the Game Center ID to our own backend server account (strictly to manage our game's cross-saves) fall under this "third party" restriction, or is our proprietary backend considered a permitted, first-party use? I want to ensure our implementation fully complies with Apple's privacy and user experience standards. Any insights would be greatly appreciated. Thank you.
Replies
1
Boosts
0
Views
395
Activity
May ’26
GKLeaderboard.submitScore succeeds in development but no production users appear on leaderboard
I'm building an iOS word game (Gramfall) and no production App Store users can see their own scores on any leaderboard, despite Game Center authentication succeeding and no errors being thrown. The same code works correctly in development and all 6 leaderboard submissions fire "Score submitted" notifications on my dev device. 6 leaderboards in App Store Connect (3 Classic all-time, 3 Recurring monthly) and all are Live Production App Store users: authenticated, scores submitted, no errors — scores never appear Development build: all 6 submissions confirmed via Settings → Developer → Notify About Score Submissions Affected users cannot see their own score on the leaderboard from their own device. This rules out privacy/visibility restrictions as a player should always see their own score. This suggests submissions are either silently failing or being accepted but not recorded in the production Game Center environment. What we have ruled out Leaderboard ID mismatch (Everything in App Store Connect matches) Authentication failure (GKLocalPlayer.local.isAuthenticated is true, app shows "Connected") All 6 leaderboards load with releaseState(rawValue: 1), isHidden: false Account-level restrictions effectively ruled out as it affects all users, not one account endGame() fires correctly, confirmed in dev Questions Is there a known difference in how GKLeaderboard.submitScore behaves between the sandbox and production Game Center environments that could cause silent failures? Is there any way for a submission to return no error yet still not be recorded in production? Code func submitGameResult(timeSeconds: Int, score: Int, longestWordLength: Int) { guard GKLocalPlayer.local.isAuthenticated else { return } Task { do { try await GKLeaderboard.submitScore(timeSeconds, context: 0, player: GKLocalPlayer.local, leaderboardIDs: ["gramfall.lb.time", "gramfall.lb.time.monthly"]) try await GKLeaderboard.submitScore(score, context: 0, player: GKLocalPlayer.local, leaderboardIDs: ["gramfall.lb.score", "gramfall.lb.score.monthly"]) try await GKLeaderboard.submitScore(longestWordLength, context: 0, player: GKLocalPlayer.local, leaderboardIDs: ["gramfall.lb.longestword", "gramfall.lb.longestword.monthly"]) } catch { print("[GameCenter] submitGameResult failed: \(error)") } } }
Replies
0
Boosts
0
Views
1.3k
Activity
Apr ’26
Xcode 26.4 Simulator Won't Load Game Center Data
For apps that support Game Center, calling presentViewController on a GKGameCenterViewController yields no data for leaderboards or achievements, regardless of which iOS version you're simulating (works fine on device, but doesn't work in simulator).
Replies
0
Boosts
0
Views
893
Activity
Apr ’26
The Problem with TestLight
I successfully registered an account a few days ago and tested the app internally, but when I published the link, the application automatically expired. When I submitted it again, I received the message: "There was an error processing your request. Please try again later." I have contacted support but have not received a response. Case ID: 102861441465
Replies
0
Boosts
0
Views
255
Activity
Apr ’26
انشاء تطبيق جديد
اريد انشاء لعبه في ابل ستور و تكون اول صفحه تكون شروط و الاحكام و خيار بدا اللعبه200 فئات من السعوديه من مسلسل من العب من بنات و بس وقطر و الإمارات وانمي ومسلسلات تركيه و السياحه و الدول وشركات عالميه و شركات كترونيه
Replies
3
Boosts
0
Views
747
Activity
Mar ’26
Clarifying when Game Center activity events fire relative to authentication
Hello, In our game we enforce an age gate before showing Game Center sign‑in. Only after the user passes the age gate do we call GKLocalPlayer.localPlayer.authenticateHandler. The reason I’m asking is that we want to reliably detect if the game was launched from a Game Center activity in the Games app (iOS 26+). If the user prefers to enter via activities, we don’t want to miss that event during cold start. Our current proposal is: Register a GKLocalPlayerListener early in didFinishLaunchingWithOptions: so the app is ready to catch events. Queue any incoming events in our dispatcher. Only process those events after the user passes the age gate and authentication succeeds. My questions are: Does player:wantsToPlayGameActivity:completionHandler: ever fire before authentication, or only after the local player is authenticated? If it only fires after authentication, is our “register early but gate processing” approach the correct way to ensure we don’t miss activity launches? Is there any recommended pattern to distinguish “activity launch” vs. “normal launch” in this age‑gate scenario? We want to respect Apple’s age gate requirements, but also ensure activity launches are not lost if the user prefers that entry point. Sorry if this is a stupid question — I just want to be sure we’re following the right pattern. Thanks for any clarification or best‑practice guidance!
Replies
3
Boosts
0
Views
1.5k
Activity
Feb ’26
GKLocalPlayer.authenticateHandler not called on iOS 26 when Game Center auth overlay is shown
Hi — we’re testing our app on iOS 26 and ran into strange behavior with GKLocalPlayer.local.authenticateHandler. GKLocalPlayer.local.authenticateHandler = { [weak self] viewController, error in // additional code } What happens: When we assign authenticateHandler on iOS 26 and the user is not signed in to Game Center, the system shows a full-screen Game Center overlay asking the user to sign in. If the user taps Cancel, nothing further happens — the closure is not invoked again, so we don’t receive an error or any callback. The app never learns whether the auth was cancelled or failed. In previous iOS versions the closure was called (with viewController / error as appropriate) and the flow worked as expected. What we tried: Verified authenticateHandler is being set. Checked GKLocalPlayer.local.isAuthenticated after the overlay dismisses — it’s unchanged. Observed system logs: a com.apple.GameOverlayUI scene is created and later removed (so the auth overlay is shown by the system). Confirmed the same code works on earlier iOS versions. :thinking: Question: Has anyone seen authenticateHandler not being invoked on iOS 26 when the Game Center auth overlay is presented? Could this be a behavioral change in iOS 26 (overlay runs in a separate system process), or a bug? Any suggested workarounds to reliably detect that the user cancelled the sign-in (for example: listening for willResignActive / didBecomeActive, watching for a system overlay, or saving/presenting the viewController manually)? Thanks in advance for any advice — we’d appreciate pointers or suggested diagnostics ?
Replies
11
Boosts
4
Views
3.1k
Activity
Feb ’26
Transferring Apps with iCloud KVS
Hi All! I'm being asked to migrate an app which utilizes iCloud KVS (Key Value Storage). This ability is a new-ish feature, and the documentation about this is sparse [1]. Honestly, the entire documentation about the new iCloud transfer functionality seems to be missing. Same with Game Center / GameKit. While the docs say that it should work, I'd like to understand the process in more detail. Has anyone migrated an iCloud KVS app? What happens after the transfer goes through, but before the first release? Do I need to do anything special? I see that the Entitlements file has the TeamID in the Key Value store - is that fine? <key>com.apple.developer.ubiquity-kvstore-identifier</key> <string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string> Can someone please share their experience? Thank you! [1] https://developer.apple.com/help/app-store-connect/transfer-an-app/overview-of-app-transfer
Replies
5
Boosts
0
Views
3.1k
Activity
Feb ’26
Present GameCentre Overlay Programmatically
As GKGameCenterViewController has been deprecated, it seems that GKAccessPoint is now the correct way to present the GameCentre leaderboard. But the placement options for the GKAccessPoint are very limited and lead to misaligned UI that looks clunky, as the GKAccessPoint does not align with the system navigation toolbar. Am I missing something here or am I just stuck with a lopsided UI now? I much preferred how this previously worked, where I could present the GKGameCenterViewController in a sheet from my own button
Replies
1
Boosts
0
Views
816
Activity
Feb ’26