GKSession模式peer:如何在没有任何按钮/确认的情况下自动连接两个对等体?

时间:2012-01-22 17:00:51

标签: ios bluetooth p2p gamekit gksession

我想在没有GKPeerPickerController的情况下在2个带有GKSession的iPhone之间建立蓝牙连接,而不需要在任何一侧推送任何“连接按钮”。

我正在使用以下代码:

currentSessionAuto = [[GKSession alloc] initWithSessionID: @"instant-friend-auto" 
currentSessionAuto.delegate = self;
currentSessionAuto.available = YES;
currentSessionAuto.disconnectTimeout = 5;
[currentSessionAuto setDataReceiveHandler: self withContext:nil];

当应用程序在双方启动时, - (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)状态在双方都被调用,状态为“GKPeerStateAvailable”。

使用“经典”应用程序时,会在两侧显示弹出窗口以询问连接,大多数情况下,“用户”都不会同时点击连接按钮。

如果我想要“自动连接”,我需要一种机制只在一侧启动会话,因为如果没有这种机制,将启动两个会话并发生错误。

任何想法/帮助?

2 个答案:

答案 0 :(得分:4)

查看GKSessionP2P,一个演示应用程序,演示GKSession的ad-hoc网络功能。该应用程序都在本地网络上进行通告,并自动连接到可用的对等方,建立对等网络。

答案 1 :(得分:1)

这里有一个想法:让具有最低peerID连接的对等体。您必须将PeerID字符串转换为int并进行比较,但它应该是一个很好的平局。