ios - iPhone SDK : GameKit and large files + connection lost

标签 ios iphone gamekit transfer

我已经使用 GameKit 一段时间了,但现在我面临着非常严重的困难。

我将通过蓝牙发送更大的文件 - 1-2MB。我已经准备好了一个数据包(每个数据包大约8kB)。

我的应用程序按照以下方案所述工作:

iPhone - sending header: file divided into 25 parts
iPod - received header: OK I got it waiting for 25 parts
iPhone - sending part #1
iPod - received part #1 send next
iPhone - sending part #2
iPod - received part #2 send next
...
iPhone - sending part #24
iPod - received part #24 send next
iPhone - sending part #25
iPod receiving part #25 processing file

我使用以下方式发送文件部分和消息(送达确认):

[mSession sendData:data toPeers:mPeers withDataMode:GKSendDataReliable error:nil];

并接收数据:

- (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context

我想了解一下蓝牙传输过程中可能出现的一些问题,您是如何处理的?浏览文档 GKSessionDelegate 没有给我任何数据是否已传递的信息。

在 90% 的情况下,传输工作正常,但有时它会突然停止,并且在不重新连接/重新启动应用程序的情况下不会继续。

如果我在 1 秒内没有得到响应,我尝试发明一个简单的解决方案来重新设置数据:

-(void)sendAgain {
    [self sendData:bufor];
}
-(void)sendData:(NSData *)data {
    bufor = [data retain];

    timeoutTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(sendAgain) userInfo:nil repeats:NO];

    [mSession sendData:data toPeers:mPeers withDataMode:GKSendDataReliable error:nil];
}

如果发件人收到文件部分成功传送的确认,timeOutTimer 将失效。但事实上,当我实现这个解决方案时,还存在更多问题。

设备在 table 上彼此相邻。

如何处理设备之间“未传递”数据的问题?它只是一个工具,但在开发游戏时怎么会让人烦恼呢?

顺便说一句,发送简短的聊天消息从来没有引起任何问题,而且我正在使用相同的方法。

事实上,连接丢失的情况很少,只是数据喜欢在空中丢失。我已经划分了各个部分,因此数据大小约为 8kb,这确实使图像传输非常慢。

最佳答案

GameKit 框架目前还不是很可靠,即使对于我正在开发的游戏的简单数据交换也是如此。我不会用它来传输大数据,你只是自找麻烦。

关于ios - iPhone SDK : GameKit and large files + connection lost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1357254/

相关文章:

IOS 9发送Post请求,被ATS阻止,绕过不起作用

iphone - 如何在旋转的 UIView(不是 UIImageView)上进行抗锯齿处理

iphone - 内存泄漏导致应用崩溃

ios - 默认游戏中心 View Controller 中的成就顺序

ios - iOS 13.0 IONIC 中的视频转码问题

ios - 在两个 UIButton 图像之间淡入淡出

iphone - 使用 NSData 更新 GKTurnBasedMatch 中的回合

ios - 我想在我的 iOS 游戏中构建一个大型社交异步游戏模式,是否有适用于此的 iOS API?

ios - 游戏套件认证

objective-c - iOS 在设备旋转时更改自动布局约束