Ios 通过游戏中心向其他玩家发送文字聊天信息?

Ios 通过游戏中心向其他玩家发送文字聊天信息?,ios,game-center,gamekit,Ios,Game Center,Gamekit,是否可以通过游戏中心向其他玩家发送文字聊天MSG?他们是否有专门的方式通过GameKit API实现这一点?或者只需要将其放入玩家之间发送的回合数据中?您必须编写自己的,游戏中心没有允许聊天的方法。您必须编写自己的,游戏中心没有允许聊天的方法。您可以在游戏期间将文本作为正常数据发送。为了做到这一点 方法来准备要发送的数据 -(void)sendText:(NSString *) text { NSString * text2Send = [NSString stringWithForm

是否可以通过游戏中心向其他玩家发送文字聊天MSG?他们是否有专门的方式通过GameKit API实现这一点?或者只需要将其放入玩家之间发送的回合数据中?

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

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

您可以在游戏期间将文本作为正常数据发送。为了做到这一点

方法来准备要发送的数据

-(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
}

您可以在游戏期间将文本作为正常数据发送。为了做到这一点

方法来准备要发送的数据

-(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
}

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


还有一个选项可以更改
match.message
的内容,但是如果你把你的短消息放在那里,对手只有在收到来自游戏中心的“轮到你”通知时才会看到它。

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


还有一个选项可用于更改
match.message
的内容,但是如果您将您的短消息放在那里,则对手只有当他们收到来自GameCenter的“你的回合”通知时才会看到它。

在发送到game center的代表玩家回合的数据中,不可能在发送到game center的数据中包含小文本MSG吗?是的,没有内置内容,大多数情况下,你需要自己编写代码。有帮助的链接:在发送到game center的代表玩家回合的数据中,不可能包含小文本MSG吗?对,没有内置内容,大部分情况下,您需要自己编写代码。帮助链接:如果有效,你可以接受其中一个答案…如果有效,你可以接受其中一个答案。。。