iPhone p2p - 有没有办法连接到多个设备?

时间:2009-07-05 13:31:23

标签: iphone iphone-sdk-3.0 gamekit

是否可以使用新的GameKit框架连接到多个设备?到目前为止,我看到的所有示例都显示了我们如何连接到1个设备。即使是默认的连接界面,用户也只能选择一个连接。

感谢。

3 个答案:

答案 0 :(得分:15)

在以下链接中有一个相当不错的概述,如何为您的应用程序配置和使用GameKit。

不幸的是,如果要支持2个以上的设备,您将无法使用 GKPeerPickerController 标准UI选择器为您配置GKSession实例。相反,您必须开发自己的UI元素来设置和配置主服务器与多个客户端之间的连接。

以下是为超过2台设备启用GameKit的简单方法:

使用 initWithSessionID:displayName:sessionMode 初始化GKSession实例时,请使用:

  • sessionMode:服务器/主机的GKSessionModeServer
  • 其他(多个)客户
  • sessionMode:GKSessionModeClient

sessionMode:GKSessionModePeer 是第三个可用选项,是Apple提供的大多数示例代码中使用的选项,例如GKTank演示。

注意:您可以使用GKSessionModePeer并且仍然拥有超过2个设备的网络,因为对等模式会同时将设备置于服务器和客户端模式,直到建立连接。将一个设备显式配置为服务器可以简化设置,这对于测试GameKit API非常有用。

对于服务器:

GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeServer]; 

对于客户:

GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeClient]; 

答案 1 :(得分:4)

过去我读过你可以使用Gamekit连接多达16个设备。我相信在Peer模式下你只能做两个,做两个以上需要将一个设备设置为主设备而其他设备设置为客户端模式。

我会查找演示使用master / client的示例,客户端应该适用于所有这三个。

您可以在GKMatchRequest(iOS6 +)上调用+maxPlayersAllowedForMatchOfType:来获取实际数字,这可能因设备而异,因此您应该将其用作上限。

答案 2 :(得分:0)

据我所知,在使用GameKit框架时,您只能耦合一对设备,一个充当服务器而另一个充当客户端(如果两者都被初始化为同伴,则必须决定哪一个将作为服务器,任意或随机选择一个服务器。

实际上,可能有许多设备都运行您的应用程序,但始终通过配对设备建立连接。

当然,您可以通过wifi编写自己的基于bonjour的网络代码并克服此限制,但需要更多编码。