我正在iOS上制作小卡片游戏。我正在使用GameKit / GKsession来处理我的网络数据传输。
我的问题是如何“打包”多个信息到NSData并发送它。当服务器收到NSData时,如何解压缩并以正确的方式处理信息。
例如,我可以毫无问题地发送和接收NSString。但我的游戏有不同的数据类型需要发送和接收,如UIImage / NSString / NSArray /...
我在SDK中找到了示例项目GKTank。但对我来说真的很难理解。在我的猜测中,它定义了几种数据类型。
有人能告诉我如何让服务器知道客户端发送的数据类型(NSString?UIImage?):
- (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession:(GKSession *)session context:(void *)context
答案 0 :(得分:0)
你实际上在寻找两件事。
1)困扰发送者和接收者理解的协议;
2)将对象“序列化”为提供给协议的数据类型并“反序列化”对象数据的方法。
对于1,您有各种选择,例如JSON,XML(基于字符串)和基于字节的协议,例如协议缓冲区。
对于2,你有各种解析器,如SBJson,TBXML和protobuf,可以帮助你编码和解码你在(1)中选择的协议。