【问题标题】:iPhone p2p - Is there a way to connect to more than 1 devices?iPhone p2p - 有没有办法连接到超过 1 个设备?
【发布时间】:2009-07-05 13:31:22
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: iphone iphone-sdk-3.0 gamekit


    【解决方案1】:

    下面的链接对如何为您的应用配置和使用 GameKit 提供了相当不错的概述。

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

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

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

    • sessionMode:GKSessionModeServer 用于服务器/主服务器
    • sessionMode:GKSessionModeClient 用于其他(多个)客户端

    sessionMode:GKSessionModePeer 是第 3 个可用选项,并且是 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]; 
    

    【讨论】:

    • 请注意,GKSession 的所有方法在 iOS 7 及更高版本中均已弃用。
    【解决方案2】:

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

    我会寻找演示使用主/客户端的示例,客户端应该适用于所有三个。

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

    【讨论】:

    • 为什么你说你可以使用gamekit连接多达四个设备?还是在对等模式下最多两个?
    • 四个是游戏套件支持主/服务器模式的限制。点对点只允许两个设备。 API 就是这样。
    • @KendallHelmstetterGelner 链接无效。请及时更新。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多