我正在使用GKSession和GKPeerPickerController开发iOS游戏。我发现连接两个iOS设备的过程很慢且不可靠,即使它们彼此相邻也是如此。我们将我的设备称为“设备A”和“设备B”。
以下是典型情况:
在每台设备上,我点击应用程序的连接按钮。然后,每个设备都会显示“iPad,iPhone或iPod touch”窗口。
通常很快,两个设备都注意到另一个存在。
然后我告诉其中一个设备(比如设备A)连接到另一个设备。
很快,设备B的窗口显示设备A不可用。
这是令人讨厌的地方。在从大约1秒到从不的一段时间之后,设备B上会弹出一个窗口,说明设备A想要连接,并询问设备B是否要接受连接。
如果弹出上面的窗口,一切都会正常进行。但这有时需要很长时间,有时根本不会发生。
我有三个设备,无论我使用哪两个,我都有类似的问题。
我能做些什么吗?
我的连接方法非常简单:
-(void) findPeerPickerOpponents {
GKPeerPickerController *picker;
picker = [[GKPeerPickerController alloc] init];
picker.delegate = self;
[picker show];
[self.connectionDelegate disableIdleTimer];
}
答案 0 :(得分:0)
它比标准方法更好,即使它的工作量增加了10倍 - 我做到了两种方式,这是一个非常好的解决方案。
答案 1 :(得分:0)
我完全放弃了peerPickerController。查看Apple的GKRocket示例代码。 - 使用GKSession和同行的表视图。我现在的设备上有点儿麻烦,原因我不清楚,但是我使用了基本的类:GameLobby和SessionManager让设备很好地连接起来。还有一个优点,就是不限制你到一个同伴。