我决定实现自己的界面来连接运行游戏的两个设备,而不是使用GKPeerPickerController。这实际上工作得很好。但我刚刚意识到,在我创建GKSession时,我实际上并未指定连接是无线还是蓝牙。我的界面中有一个选项让用户指定他们想要使用的连接方法。如何告诉GKSession我是否希望它通过蓝牙或无线连接?
我认为目前正在发生的情况是,如果启用了无线,则默认为无线,否则使用蓝牙。但是我想让用户指定哪种连接方法,这可能吗?
谢谢, 娜
答案 0 :(得分:2)
据我所知,你不能自己做。这就是GKPeerPickerController的用途。它默认通过BlueTooth设置连接,但您也可以添加第二个掩码,以便用户选择其协议。基本上我一直在做的是设置掩码,允许用户选择蓝牙或“在线”(wifi):
_picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby|GKPeerPickerConnectionTypeOnline;
然后,如果他们选择在线,请关闭同行选择器并继续实现您的自定义界面。应该以我所知的相同方式创建会话。这不是很好的记录:/
答案 1 :(得分:1)
要进行选择,您需要一个界面询问用户是否要使用网络或蓝牙。如果是后者,它可以跳转到peerpickercontroller或实现GK调用。对于前者,您必须转储GK并手动编码。
这是一个非常复杂的主题,涉及在两侧设置Bonjour流和监听对象。它完全在GameKit之外工作,GameKit只是蓝牙。
关于如何在Apress的更多iPhone 3开发 - 第9章中实现网络协议有一个非常好的章节。这是一本非常好的书,仅凭这一章就值得你去尝试这样做。它很好地解释了所有问题并引导您完成功能性示例游戏。