是否可以通过游戏中心向其他玩家发送文字聊天消息?他们用GameKit API做任何专门的方式吗?还是只需要将其放入玩家之间发送的转弯数据中?
答案 0 :(得分:2)
你必须自己编写,游戏中心没有方法可以聊天。
答案 1 :(得分: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
}
答案 2 :(得分:0)
与已提议的内容一样,您可以使用GKTurnBasedMatch
的{{1}}。如果您的游戏是回合制的,您可以拥有两种游戏数据消息类型:一种用于在每个玩家回合结束时发送游戏数据,另一种用于发送聊天消息。或者您可以将它们组合在一起,以便在每个玩家结束轮到时发送消息。但是,如果您只使用matchData
发送聊天消息,请确保它不会终止播放器,否则您将遇到游戏同步问题。使用matchData
方法发送消息;在另一方面,GameKit会在收到消息时调用你的回调 - 你应该阅读更新的saveCurrentTurnWithMatchData:completionHandler:
并查看它是消息还是游戏状态更新 - 如果你使用JSON或XML或NSDictionary,这相对容易用于来回发送数据的序列化 - 您可以在其中引入类似matchData
属性的内容,以便您区分文本消息和游戏状态更新。
还可以选择更改dataType
内容,但是如果你在那里发短信,对手只会在收到GameCenter的“轮到你”通知后才能看到它。