Ios 与GKPeerPickerController的连接故障
我正在用GKSession和GKPeerPickerController开发一款iOS游戏。我发现连接两台iOS设备的过程既慢又不可靠,即使它们紧挨在一起。让我们将我的设备称为“设备A”和“设备B” 以下是通常发生的情况:Ios 与GKPeerPickerController的连接故障,ios,iphone,gamekit,gksession,gkpeerpickercontroller,Ios,Iphone,Gamekit,Gksession,Gkpeerpickercontroller,我正在用GKSession和GKPeerPickerController开发一款iOS游戏。我发现连接两台iOS设备的过程既慢又不可靠,即使它们紧挨在一起。让我们将我的设备称为“设备A”和“设备B” 以下是通常发生的情况: 在每台设备上,我都会点击应用程序的连接按钮。然后,每个设备都会显示“iPad、iPhone或iPod Touchs”窗口 通常很快,两台设备都会注意到另一台设备的存在 然后我告诉其中一个设备(比如设备A)连接到另一个 很快,设备B的窗口显示设备A不可用 这就是让人讨厌的地方。
-(void) findPeerPickerOpponents {
GKPeerPickerController *picker;
picker = [[GKPeerPickerController alloc] init];
picker.delegate = self;
[picker show];
[self.connectionDelegate disableIdleTimer];
}
好的,您应该做什么:
-假设您有设备A、B和C
-设备A正在扫描,设备B刚刚开始扫描
-设备A将设备B视为新的对等设备-它向B发送邀请
-设备B收到邀请-它会自动批准,两个设备都已连接,不会向用户显示任何通知,除非设备出现在大厅中
-设备C显示
-设备A和B尝试连接到它,它们会自动连接并显示在大厅
-播放器触摸设备A上的设备B
-设备A向B发送WANNAPLAY数据包
-B出现弹出窗口询问玩家是否想与A一起玩-玩家回答是
-设备B向A发送ACCEPTED,并断开除A以外的所有人的连接(通过发送DISCONNECT)
-设备A被接受并断开除B以外的所有设备的连接(通过发送断开连接)
-设备C断开2次连接,并将A和B从其大厅中移除
它比标准方法工作得好得多,即使它比标准方法多了10倍——我用两种方法都做到了,这是一个非常好的解决方案。我完全放弃了peerPickerController。查看苹果的GKRocket示例代码使用对等方的会话和表视图。现在我的设备上有点问题,原因我不清楚,但我使用了基本类:GameLobble和SessionManager,让设备连接得很好。还有一个优点,就是不把你限制在同一个人身上