GameKit蓝牙

时间:2010-03-10 12:11:14

标签: iphone bluetooth gamekit

我正在尝试了解我正在尝试使用GameKit进行蓝牙连接的游戏所需的基本步骤。我只有一台设备,所以我不能很容易地测试我的想法。

游戏涉及通过GameKit在蓝牙上最多2名玩家,而发送/接收的唯一数据是“镜头”,仅包括位置和方向数据。

这是我认为应该发生的事情,我真的只是希望有人指出我所犯的任何错误:

  • 游戏首先展示一个GKPeerPickerController,其connectionTypeMask为'GKPeerPickerConnectionTypeNearby',并将其委托设为'self'。

  • 实现了GKPeerPickerController委托方法'peerPickerController:didConnectPeer:toSession:'并将会话dataReceiveHandler设置为self。 peerID被添加到NSMutableArray,后者保存所有连接的对等ID。 (任何时候都应该只连接1个对等体。)

  • 要在每个游戏中仅强制实施1个对等连接,方法'session:didReceiveConnectionRequestFromPeer:'将检查保存连接的peerID的NSMutableArray的'count'属性。如果'count'> 0,那么我们通过调用:'denyConnectionFromPeer:'来回应:'acceptConnectionFromPeer:error:'

  • 要发送一个镜头,游戏会调用:'sendData:toPeers:withDataMode:error:'

  • 为了接收镜头,游戏回应:'receiveData:fromPeer:inSession:context:'

是否缺少任何步骤?例如,如果用户在连接之前尝试连接到我,那么我的GKPeerPickerController会发生什么?我怎么知道解雇它?

没有其他iPhone / iPod,我无法测试。

1 个答案:

答案 0 :(得分:3)

首先,如果你想在Gamekit中测试蓝牙,你真的需要第二台设备。如果您对您的应用程序非常认真,请尝试购买便宜/翻新的iPhone或iPod Touch,它将支持GameKit蓝牙(最老的设备不支持)。我实际上认为你用两台Mac进行测试会做得更好,但是如果你还没有第二台用于测试的话。

您上面发布的内容非常正确 - 实际上使用PeerPicker非常简单,您应该可以使用Apple的文档轻松完成它。问题是,根据我的经验,它有点笨拙。这可能是因为我正在使用3GS和3G进行测试,并且内部有不同的蓝牙,但很多时候,当你概述的情景发生时,我看到很奇怪的事情 - “如果用户在我连接之前尝试连接到我给他们。”最后它通常仍然有效,但不是没有一点等待的开销,也许用户不得不重复这个过程一两次。