【问题标题】:GameKit bluetoothGameKit 蓝牙
【发布时间】: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,我将无法测试。

【问题讨论】:

    标签: iphone bluetooth gamekit


    【解决方案1】:

    首先,如果您想在 Gamekit 中测试蓝牙,您确实需要第二台设备。如果您对您的应用程序很认真,请尝试购买支持 GameKit 蓝牙的廉价/翻新 iPhone 或 iPod Touch(最旧的设备不支持)。实际上,我认为您使用两台 Mac 进行测试会做得更好,但如果您还没有第二台,那就太昂贵了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多