Tag: gamekit

如何识别出现为空括号的空NSData对象?

我正在处理Game Kit的GKTurnBasedMatch类中的腐败问题(请参阅此线程 ),有时会导致游戏状态无效,并且matchData损坏。 所以作为一个解决方法,我正在创build一个方法来识别这些无效匹配,所以我可以适当地处理它们。 损坏的matchData似乎是一个很好的方法来做到这一点。 但是,到目前为止,我一直无法识别他们。 当我这样做: // "match" is an existing GKTurnBasedMatch object NSLog(@"match data is: %@",[match matchData]); NSLog(@"match data is nil? %@",[match matchData] == nil ? @"YES" : @"NO"); NSLog(@"match data equals empty nsdata? %@",[match matchData] == [NSData data] ? @"YES" : @"NO"); 我得到以下内容: match data is: <> match data is nil? NO […]

GKTurnBasedMatch matchData的最大尺寸

我一直在寻找一个明确的答案,但我得到了一些不一致的答案。 苹果文档状态64k字节。 然而,网上我发现多个来源,说4k字节是最大的。 这是iOS 5和iOS 6的区别吗?

检查您是否已经在Game Center / GameKit中解锁了成就

我已经在这个很长时间了。 我明白如何在Game Center中取得成就,甚至还有一个完整的消息系统。 但我不知道如何检查一个成就已经被解锁:( 显然这不起作用: GKAchievement *achievement = [[GKachievement alloc] initWithIdentifier:ident] autorelease]; NSLog(@"%i",achievement.completed); 它始终跟踪“0”。 解锁成就确实奏效: GKAchievement *achievement = [[GKachievement alloc] initWithIdentifier:ident] autorelease]; achievement.percentComplete = 100; 所以并不是我在整个成就方面犯了错误,只是GameKit不能告诉我成就是否已经被解锁了。 如果有人能帮助我,我将非常感激!

iOS Wifi直接通信

我想知道是否有两个iPhone独家与Wifi-Direct进行通信的方式。 (没有蓝牙,没有服务器,只需Wifi直接) 纠正我,如果我错了,但MultiPeerConnectivity,GameKit和CFNetServices不允许使用专门的Wifi直接。 如果他们这样做,有人可以给我一个例子吗? 谢谢你的时间!

更新GKTurnBasedMatch中的matchData而不结束转弯

似乎GameKit只允许GKTurnBasedMatch在每次从Game Center服务器加载GKTurnBasedMatch时更新一次。 有没有其他的方式来更新matchData属性?

处理邀请GKTurnBasedMatch没有游戏中心视图控制器

我正在做一个简单的基于回合的文字游戏,我很难搞清楚邀请函是如何工作的。 当用户A邀请用户B参加游戏时,我希望用户B能够在我的自定义比赛界面(即,列出所有用户B的游戏的屏幕)中看到该游戏。 如果用户B被邀请参加游戏时点击通知,事情就没有问题,但是如果用户B自己导航到应用程序,我仍然希望通过自己的界面可以看到游戏。 每当此匹配界面屏幕出现时,我正在使用[GKTurnBasedMatch loadMatchesWithCompletionHandler:]获取所有本地玩家的匹配。 有了这个,我会假设用户B能够看到他被邀请的比赛,但是这个新的比赛没有出现。 如果我通过GKTurnBasedMatchmakerViewController接受邀请,则用户按照预期进入游戏,但是更让人费解的是,如果我打开了我的GKTurnBasedMatchmakerViewController ,然后在不接受邀请的情况下取消,现在会在我的自定义匹配中显示新的匹配接口,但它缺less用户A发送的匹配数据。 总之,我真的只是想知道如何正确显示和接受GKTurnBasedMatch邀请与自定义接口(而不是必须使用GKTurnBasedMatchmakerViewController )。 谢谢!

iOS开发:authenticationGame Center用户的奇怪问题

我正在构build支持Game Center(GC)的iPhone游戏。 当应用程序启动时,我尝试authentication本地播放器… if([GKLocalPlayer localPlayer].authenticated == NO) { [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) { [self callDelegateOnMainThread: @selector(processGameCenterAuth:) withArg: NULL error: error]; }]; } 一切似乎都运作良好。 如果用户在启动应用程序时未loginGC,则应用程序将显示一个对话框,提供三个选项… login到现有的帐户 创build一个帐户 取消 这是期望的行为,但是当我testing的时候,我点击了“取消”选项,现在validation过程出错,每次出现以下错误“请求的操作已被取消”。 即使当我删除应用程序并重新安装它,它仍然错误,对话框现在永远不会popup。 有谁知道为什么会发生这种情况,或者我该如何解决这个问题? 预先感谢您的智慧!

如何将NSNumber转换为NSData?

我需要通过使用sendDataToAllPeers:withDataMode:error:发送一个整数GameKit sendDataToAllPeers:withDataMode:error:但我不知道如何将我的NSNumber转换为NSData为了发送。 我目前有: NSNumber *indexNum = [NSNumber numberWithInt:index]; [gkSession sendDataToAllPeers:indexNum withDataMode:GKSendDataReliable error:nil]; 但显然indexNum需要转换为NSData之前,我可以发送它。 有谁知道如何做到这一点? 谢谢!

iOS开发:当收到Game Center邀请函时,如何获取GKMatch对象?

我正在构build一个使用Game Center的iPhone游戏,而且我很难理解如何开始一个通过接收朋友的邀请而开始的比赛游戏。 文档说这个… 当应用程序直接从另一个玩家接收邀请时,acceptedInvite参数是非零。 在这种情况下,其他玩家的应用程序已经创build了匹配请求,所以这个应用程序的副本不需要创build一个。 据此,我不需要创build一个匹配请求,因为邀请的玩家已经创build了一个。 如果是这样,我该如何获得发送/接收数据到另一个玩家所需的GKMatch对象? 我知道获取GKMatch对象的唯一方法是创build一个匹配请求并调用findMatchForRequest方法,文档说这是我不应该做的。 他们唯一的代码示例涉及创build和使用GKMatchmakerViewController ,我不能使用,因为我创build自己的自定义视图。 非常感谢您的智慧!

iOS游戏中心GameKit程序化邀请配对

我正在尝试实现一个实时的多人游戏与自定义用户界面(没有GKMatchMakerViewController)。 我使用的是startBrowsingForNearbyPlayersWithReachableHandler:^(NSString * playerID,BOOL可达)find一个本地播放器,然后用GKMatchmaker单例(我已经发起)发起一个匹配请求。 这是我遇到麻烦的地方。 当我发送请求时,完成处理程序几乎立即触发,没有错误,并且它返回的匹配具有预期的玩家数为零。 同时,另外一个玩家肯定没有回应这个要求 相关编码: – (void) findMatch { GKMatchRequest *request = [[GKMatchRequest alloc] init]; request.minPlayers = NUM_PLAYERS_PER_MATCH; //2 request.maxPlayers = NUM_PLAYERS_PER_MATCH; //2 if (nil != self.playersToInvite) { // we always successfully get in this if-statement request.playersToInvite = self.playersToInvite; request.inviteeResponseHandler = ^(NSString *playerID, GKInviteeResponse response) { [self.delegate updateUIForPlayer: playerID accepted: (response == […]