2012-09-26 138 views

回答

2

你必须自己写,游戏中心没有方法允许聊天。

+0

发送到游戏中心的数据中发送的数据中包含的小文本信息是不可能的,该数据代表玩家转向? – Phil

+0

没错,没有内置任何东西,大多数情况下您都是自己为自己推出自己的代码。有用的链接:https://developer.apple.com/library/ios/#DOCUMENTATION/GameKit/Reference/GameKit_Collection/_index.html – nycynik

1

您可以在游戏过程中以普通数据的形式发送文本。为了做到这一点

方法准备要发送的数据

-(void)sendText:(NSString *) text { 

    NSString * text2Send = [NSString stringWithFormat:@"%@", text]; 
    [self sendData:[text2Send dataUsingEncoding:NSUTF8StringEncoding]]; 
} 

的发送数据的方法将是正常的数据发送游戏中心的方法

- (BOOL)sendDataToAllPlayers:(NSData *)data withDataMode:(GKMatchSendDataMode)mode error:(NSError **)error; 

,为了解决收到的数据

NSString * rawText = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding]; 

if(rawText.length > 0) 
{ 
    //Do what ever you want with the text 
} 
0

就像已经提出的,你可以使用GKTurnBasedMatchmatchData。如果您的游戏是基于回合的,则可以有两种游戏数据消息类型:一种用于在每位玩家轮到末端发送游戏数据,另一种用于发送聊天消息。或者您可以将它们组合起来,以便在每位玩家轮到她时发送消息。但是,如果您只使用matchData发送聊天消息,请确保它不会结束玩家的游戏,否则您将遇到游戏同步问题。用于发送消息的方法saveCurrentTurnWithMatchData:completionHandler:;另一方面,GameKit会在你接收到消息时调用你的回调 - 你应该阅读更新的matchData,看看它是一个消息还是游戏状态更新 - 如果你使用JSON或XML或NSDictionary序列化来发送数据,这是相对容易的来回 - 你可以在那里引入dataType属性,这会让你区分短信和游戏状态更新。

还有一个选项可以改变match.message的内容,但是如果你在那里输入你的短消息,那么只有当他们收到来自GameCenter的'轮到'通知时,对手才会看到它。