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