2

我想在没有 GKPeerPickerController 且不按下任何“连接按钮”的情况下在 2 部 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)state,状态为“GKPeerStateAvailable”。

对于“经典”应用程序,两侧都会显示一个弹出窗口以请求连接,并且大多数情况下,两个“用户”不会同时单击连接按钮。

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

任何想法/帮助?

4

2 回答 2

4

看看GKSessionP2P,这是一个演示应用程序,它说明了GKSession. 该应用程序既在本地网络上宣传自己,又自动连接到可用的对等点,从而建立一个点对点网络。

于 2012-01-30T07:15:03.603 回答
1

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

于 2012-11-06T00:43:35.487 回答