我试图了解我尝试使用 GameKit 进行蓝牙连接的游戏所需的基本步骤。我只有一台设备,所以我不能很容易地测试我的想法。
该游戏通过 GameKit 通过蓝牙最多涉及 2 名玩家,唯一要发送/接收的数据是“镜头”,其中仅包括位置和方向数据。
这是我认为应该发生的事情,我真的只是希望有人指出我犯的任何错误:
游戏首先呈现一个 GKPeerPickerController,其 connectionTypeMask 为“GKPeerPickerConnectionTypeNearby”,并将其委托设置为“self”。
GKPeerPickerController 委托方法 'peerPickerController:didConnectPeer:toSession:' 已实现并将会话 dataReceiveHandler 设置为 self。peerID 被添加到 NSMutableArray 中,该数组保存所有连接的对等 ID。(任何时候都应该只有 1 个对等方连接)。
为了在每个游戏中只强制执行 1 个对等连接,方法 'session:didReceiveConnectionRequestFromPeer:' 检查 NSMutableArray 的 'count' 属性,该 NSMutableArray 包含已连接的 peerID。如果 'count'>0 则我们通过调用响应:'denyConnectionFromPeer:' 否则,我们调用:'acceptConnectionFromPeer:error:'
为了发送一个镜头,游戏调用:'sendData:toPeers:withDataMode:error:'
要接收镜头,游戏会响应:'receiveData:fromPeer:inSession:context:'
是否缺少任何步骤?例如,如果用户在我连接到他们之前尝试连接到我,我的 GKPeerPickerController 会发生什么?我怎么知道要解雇它?
如果没有另一部 iPhone/iPod,我将无法测试。