GKLocalPlayer.local.authenticateHandler = {viewController, error in
When authenticating a player using authenticateHandler, the completion handler is only called if the player is already logged in. If the player is not logged in, the authentication window will appear but the completion handler is never called.
If I have content in a volumetric window that obscures the login window (which appears at a slight Z increase from the parent window), what can I do? If the completion handler was being called then I could make adjustments to my view, but it never gets called if the user is not already logged in.
https://developer.apple.com/documentation/gamekit/authenticating_a_player
Thanks.
GameKit
RSS for tagCreate apps that allow players to interact with each other using GameKit.
Post
Replies
Boosts
Views
Activity
Hello,
I am building an app that requires players joined to an online game session and to have a video chat with both of their front cameras turned on. I currently know that GameKit supports the voice chat option but could not find any source for video chat. Is it possible set up a video chat on an online game session?. What libraries can I use that have support in implementing the video chat (AVFoundation) ?
Your assistance is greatly appreciated.
We noticing below crash mainly happening in iOS 17. Can someone check and confirm what is the root cause for this and how to fix the crash.
GKAppLevelSignInVisibility fetchAppLevelVisibilityConstraintsWithHandler
Thread 36 Crashed:
0 CoreFoundation 0x00000001904a9d6c -[__NSDictionaryM setObject:forKeyedSubscript:] + 452 (NSDictionaryM.m:202)
1 GameCenterUICore 0x000000020fe6d508 __76+[GKAppLevelSignInVisibility fetchAppLevelVisibilityConstraintsWithHandler:]_block_invoke_3 + 84 (GKAppLevelSignInVisibility.m:82)
2 GameCenterFoundation 0x00000001c8b8971c @objc closure #1 in LimitedPresentationManager.presentationDisabled(config:context:) + 268
3 GameCenterFoundation 0x00000001c8b8b111 partial apply for @objc closure #1 in LimitedPresentationManager.presentationDisabled(config:context:) + 1
4 GameCenterFoundation 0x00000001c8b8b101 thunk for @escaping @callee_guaranteed @Sendable @async () -> () + 1
5 GameCenterFoundation 0x00000001c8b8b105 partial apply for thunk for @escaping @callee_guaranteed @Sendable @async () -> () + 1
6 GameCenterFoundation 0x00000001c8b8aa0d specialized thunk for @escaping @callee_guaranteed @Sendable @async () -> (@out A) + 1 (:0)
7 GameCenterFoundation 0x00000001c8b8ab6d partial apply for specialized thunk for @escaping @callee_guaranteed @Sendable @async () -> (@out A) + 1 (:0)
8 libswift_Concurrency.dylib 0x000000019b78da41 completeTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) + 1 (Task.cpp:463)
Full iOS crash log
In my code,i use GCMouse to detect mouse event and it works fine in iOS 16, but while i upgrade my iPhone to iOS 17.3.1, GCMouse doesn't works. But it works fine in IPad 17.3.1. How can i detect mouse event i iOS 17.3.1?
I re-posted to fix format issues as neither edit nor remove seems to work. However I am not able to delete this post.
Please check the latest version of this post with the same title and also posted by playbrainiacs. Thanks.
I need clarification on the GKLocalPlayer.local.isMultiplayerGamingRestricted behavior which check's user's device capability (whether it is set up to allow or disallow multiplayer)
I am referring to this from Apple documentation at :
https://developer.apple.com/documentation/gamekit/authenticating_a_player if GKLocalPlayer.local.isMultiplayerGamingRestricted { // Disable multiplayer game features. }
The issue is that this is a boolean (true/false value )
However I have noticed that iOS ( latest version and preceding versions) allow people to have the following options: ( you can set these under screen time -> content restrictions -> Multiplayer games )
Disallow all multiplayer games - presumably your API returns a false for
this.
Allow multiplayer with friends only -???? what does GKLocalPlayer.local.isMultiplayerGamingRestricted return here?? if True, how is the Friends only restriction handled? Are we supposed to do something to force it? Note: So far I am relying on Apple's Game Center native experience and have not added wrappers to do additional filtering etc. I hope that I shall be able to keep doing so.
Allow all multiplayer games - presumably your API returns a false for
this.
You can see how there are three choices but this is modeled as a boolean.
Choice number 2. is not addressed.
Has anyone come across this?
Note: This is very different from checking for underage users.
No matter what I do, in my post above, it won't set the correct numbers for numbered bullet -points. I call them 1, 2, 3 it posts 1,1,2 or 1.,2,1 etc. ( side nit ) Apologies if this isn't as readable as it should be.
Hi all, I have a macbook air 2022 with the M2 chip inside. I am trying to use a wired xbox 360 controller to play games on steam. However, whenever I try to plug it it, the light shines green for a little bit and then turns off.
I checked in my usb device tree through the system report and it says that there is a controller plugged in. The controller doesn't work in the game either, are there any fixes?
I am also on macOS Monterey version 12.4
I am currently developing an USB HID Device, specifically a type of Joystick.
However it seems that any attempt of getting a joystick to work on Mac do not work. My prototype works perfectly on Windows, being recognised as such and receiving all data.
On MacOS, the Joystick is not recognised as a Joystick though, and the OS does not seem to receiver any Input from it whatsoever. I have translated my code to use both Mouse and Keyboard, both work perfectly. I have also tried to have the Joystick identify as a Gamepad, but again, it works on Windows and is not recognised on Mac (is not recognised as a Gamepad).
Are there any specific restrictions to HID devices on MacOS? Apple developer only seems to describe specifics from a software standpoint, not from the standpoint of someone developing hardware. And even then it only seems to describe very specific HID devices, such as mouse, keyboard or a stylus.
Please also keep in mind that I don't have much experience developing MacOS applications.
I've installed the GPTK before, but it pops up with some problems so I want to reinstall it again. So I deleted home brew and redownload all the materials I needed. But when it comes to install the game-porting-toolkit formula, I can't download it, did anyone have the same problem with me?
jimmy@Jimmymbp14 ~ % brew -v install apple/apple/game-porting-toolkit
Error: Formulae found in multiple taps:
* apple/apple/game-porting-toolkit-compiler
* gcenx/apple/game-porting-toolkit-compiler
Please use the fully-qualified name (e.g. apple/apple/game-porting-toolkit-compiler) to refer to a specific formula.
jimmy@Jimmymbp14 ~ %
Hi, I am a musician and I tried the vision pro a few days ago. I have ideas to launch the related app on Vision Pro. I would like to find a developer who can help me build up the app :) Thank you all!
Hi there,
I'm reaching out to inquire about compatibility restrictions regarding the 8BitDo Ultimate 2.4G Wireless Controller on macOS systems, particularly its functionality with third-party applications such as Construct 3, a browser-based game development software.
As an indie game developer, I recently acquired the 8BitDo Ultimate controller for its touted compatibility and functionality. While I've primarily used it in Bluetooth mode on my Mac without encountering any significant issues, I've stumbled upon a peculiar problem when using the controller while developing projects in Construct 3, specifically within the preview mode of the game engine.
In attempting to test my projects using Construct 3's preview feature, the controller fails to detect any of my inputs. This is particularly confounding as the controller operates flawlessly when I export a proper macOS build of the game from the engine and play it externally.
To further investigate, I experimented with Nintendo Switch Joy-Cons, which surprisingly worked seamlessly without encountering any issues during testing within Construct 3's preview mode.
Upon reaching out to both Construct 3 and 8BitDo customer support, I was informed that the compatibility restriction with third-party controllers on macOS is due to limitations imposed by Apple, which are beyond their control. Consequently, I sought assistance from Apple Developer Program Support, who directed me to contact the Code-level Technical Support team or inquire on the developer forum.
The lack of compatibility with crucial development tools like Construct 3 significantly hampers my workflow as an indie developer, and I'm eager to find a resolution to this issue.
Thank you for your time, and I'm hopeful that someone within the community might be able to provide guidance on this matter.
Recently (I'm not sure exactly when), the "Sign in to Game Center" banner started appearing at the top of my app when the app sets the GC authentication handler and there is no Game Center player currently signed in on the device:
So far so good. But if the banner is tapped, a full "Sign In to Game Center" modal view automatically appears and covers the app without notification:
This is not the sign-in view controller that the GC authentication handler normally passes when a player is not signed in, which previously gave my app control over when to present it. My app is unaware that it is covered by this new sign-in screen.
Is there any way for my app to know when the user taps the "Sign In" banner and causes this new automatic sign-in screen to appear? I need to pause my game while it is covered up.
In general, is there a way for my view controller to be notified when it has been covered by a modal view controller that's outside my app's control?
Hi!
I have a new game and I have setup the leaderboards and achievements in App Store Connect but all of them are "not live" and in console I see this warning:
"No AchievementDescription could be found for Achievement with ID: {my_ID}"
I did not do a fresh Game Center setup for a long time, but is there any way to test if achievements and leaderboards are working for nonreleased game?
Thank you!
I have a two-level view-based NSOutlineView, employing a data-source and delegate. It is not populated by binding. My code is all ObjC, and my problem persist since MacOS 10.11 to the current MacOS 14.4.x
Because of some specific visual issue, I use a very simple subclass of NSTableRowView, which has only this:
@implementation MYRowView
- (void)drawRect:(NSRect)dirtyRect {
self.emphasized = NO; // this affects the complicated color scheme for selection - will not use the "alternateColor" for drawing, but rather the "secondary color" - who knows what it is. This way our texts and icons and progress do NOT disappear on selected rows.
[super drawRect:dirtyRect];
}
@end
And then later, in my NSOutlineView delegate:
-(NSTableRowView *)outlineView:(NSOutlineView *)outlineView rowViewForItem:(id)item {
return [OITRowView new];
}
There are, other more complicated
@interface OITOutlineCellView : NSTableCellView
That I makeViewWithIdentifier:owner: and populate in response to NSOutlineView
- (NSView *)outlineView:(NSOutlineView *)outlineView
viewForTableColumn:(NSTableColumn *)tableColumn
item:(id)item {
Now I noticed that after adding several items (top level) with some thousands sub-level items to my outline-view, and then REMOVING them and reloading all data - my app's memory is ever increasing
When I used the memory graph feature in Xcode debugger - I found a huge number (actually identical to the maximum number of rows) - all of the class MYRowView. Interestingly enough - none of my cell-views remained in memory.
Now I verified - my data source reported zero items, the UI looks empty, and all functions as expected - except for this "leak" of MYRowView objects.
As you can see in the code (copied exactly from my app) I only create them - and return them to the OS - I never hold any reference to these objects.
So.... What Am I doing wrong, and what can I do to alleviate the issue??
The methods [NSOutlineView reloadItem:reloadChildren:] and [NSTableView reloadData] are documented to "release all related views" -- but obviously they DONT. my app gets to ~300 MB (started at 20MB) with about 7500 rows
Idea anyone? What to check? what to try?
Hello,
As stated in the title, we implemented the GameKit unity package.
We did a lot of testing and never encountered any issue related to the authentication until now, andwe identified that the device with the issue was Intel.
The configurations and provisioning profile used are correctly set.
I was wondering if any of you encountered this issue or had an idea how to debug this?
Thanks!
My MacBook Pro is M3 max, running macOS 14.4.1 (23E224), with Xcode 15.3 and Command_Line_Tools_for_Xcode_15.3 installed. When I tried to execute "brew -v install apple/apple/game-porting-toolkit", it reported the following error.
Error: apple/apple/game-porting-toolkit 1.1 did not build
Logs:
/Users/yuanmouren/Library/Logs/Homebrew/game-porting-toolkit/00.options.out
/Users/yuanmouren/Library/Logs/Homebrew/game-porting-toolkit/01.configure
/Users/yuanmouren/Library/Logs/Homebrew/game-porting-toolkit/01.configure.cc
/Users/yuanmouren/Library/Logs/Homebrew/game-porting-toolkit/02.make
/Users/yuanmouren/Library/Logs/Homebrew/game-porting-toolkit/wine64-build
If reporting this issue please do so to (not Homebrew/brew or Homebrew/homebrew-core):
apple/apple
I found the following error reasons in the console.
/private/tmp/game-porting-toolkit-20240414-2133-st99bv/wine/dlls/crypt32/unixlib.c:629:11: error: unknown type name 'SecTrustSettingsDomain'
const SecTrustSettingsDomain domains[] = {
^
/private/tmp/game-porting-toolkit-20240414-2133-st99bv/wine/dlls/crypt32/unixlib.c:630:9: error: use of undeclared identifier 'kSecTrustSettingsDomainSystem'
kSecTrustSettingsDomainSystem,
^
/private/tmp/game-porting-toolkit-20240414-2133-st99bv/wine/dlls/crypt32/unixlib.c:631:9: error: use of undeclared identifier 'kSecTrustSettingsDomainAdmin'
kSecTrustSettingsDomainAdmin,
^
/private/tmp/game-porting-toolkit-20240414-2133-st99bv/wine/dlls/crypt32/unixlib.c:632:9: error: use of undeclared identifier 'kSecTrustSettingsDomainUser'
kSecTrustSettingsDomainUser
^
/private/tmp/game-porting-toolkit-20240414-2133-st99bv/wine/dlls/crypt32/unixlib.c:640:18: warning: this function declaration is not a prototype [-Wstrict-prototypes]
status = SecTrustSettingsCopyCertificates(domains[domain], &certs);
^
/private/tmp/game-porting-toolkit-20240414-2133-st99bv/wine/dlls/crypt32/unixlib.c:641:23: error: use of undeclared identifier 'noErr'
if (status == noErr)
^
/private/tmp/game-porting-toolkit-20240414-2133-st99bv/wine/dlls/crypt32/unixlib.c:647:31: warning: this function declaration is not a prototype [-Wstrict-prototypes]
if ((status = SecItemExport(cert, kSecFormatX509Cert, 0, NULL, &certData)) == noErr)
^
/private/tmp/game-porting-toolkit-20240414-2133-st99bv/wine/dlls/crypt32/unixlib.c:647:51: error: use of undeclared identifier 'kSecFormatX509Cert'
if ((status = SecItemExport(cert, kSecFormatX509Cert, 0, NULL, &certData)) == noErr)
^
/private/tmp/game-porting-toolkit-20240414-2133-st99bv/wine/dlls/crypt32/unixlib.c:647:95: error: use of undeclared identifier 'noErr'
if ((status = SecItemExport(cert, kSecFormatX509Cert, 0, NULL, &certData)) == noErr)
^
2 warnings and 7 errors generated.
make: *** [dlls/crypt32/unixlib.o] Error 1
make: *** Waiting for unfinished jobs....
How should I resolve this issue?
[UE] Assertion failed: Binding.index < ML_MaxTextures [File:./Runtime/Apple/MetalRHI/Private/MetalPipeline.cpp] [Line: 563]
Metal texture index exceeded!
How can I solve it?
Here is a link to a super long conversation with a true genius at StackOverflow
https://stackoverflow.com/questions/78343630/what-algorithm-is-available-to-correlate-a-skspritenodes-position-with-the-uibe/78379892#78379892
He has done an extraordinary amount of work to make up for what I consider is the non-working of UIBezierPath’s orientToPath = true.
He’s done multiple hours work to make up for orientToPath = true not working.
What are we missing?
When I run the following code, the Matchmaker view is populated with me (local player) and my opponent (correct picture and friendly name). however, the "Send Game" button is disabled. I assume that recipients is set correctly.
There are errors from loadPlayersForIdentifiers .
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.defaultNumberOfPlayers = 2;
request.inviteMessage = @"Testing";
[GKPlayer loadPlayersForIdentifiers:@[ playerID ]
withCompletionHandler:^(NSArray<GKPlayer *> *_Nullable players,
NSError *_Nullable error) {
if (error) {
NSLog(@"Error loading player: %@", error);
} else if (players.count > 0) {
request.recipients = players;
GKTurnBasedMatchmakerViewController *mmvc =
[[GKTurnBasedMatchmakerViewController alloc]
initWithMatchRequest:request];
mmvc.turnBasedMatchmakerDelegate = self;
mmvc.showExistingMatches = NO;
[self presentViewController:mmvc
animated:YES
completion:nil];
}
}];
If I remove the opponent, and then re-add them manually, the "Send Game" button is enabled.
I've added a recurring leaderboard in App Store Connect which I can get the localized title from, submit scores to, and load players from, but I'm getting an error whenever I try loading the image for it with the instance method for GKLeaderboard, loadImage().
The description from the error is:
The requested operation could not be completed due to an error communicating with the server.
Both the completion block and async versions of this method yield the same result.
I made sure the image is a PNG in 1024x1024, 72 DPI, and in the RGB colorspace. No errors appear after I upload the image.
Are there any hidden requirements that might be causing this error? Perhaps there is a waiting period before the server can provide the image?