如何在GKSessionModeServer / GKSessionModeClient模型中查找和连接设备

时间:2013-02-21 09:48:41

标签: ios bluetooth gamekit

使用GKPeerPickerController我可以通过bluetogether轻松连接两个ios设备。但它只能在GKSessionModePeer模式下使用。

我使用代码在GKSessionModeServer模式下创建会话

GKSession *session=[[GKSession alloc] initWithSessionID:nil displayName:nil sessionMode:GKSessionModeServer];
session.delegate = self;
session.available = YES;
// Set data handler.
[session setDataReceiveHandler:self withContext:nil];

此代码在另一台设备中以GKSessionModeClient模式创建会话

GKSession *session=[[GKSession alloc] initWithSessionID:nil displayName:nil sessionMode:GKSessionModeClient];
session.delegate = self;
session.available = YES;
// Set data handler.
[session setDataReceiveHandler:self withContext:nil];

当我设置session.available =YES时,应该调用一些delegate方法。但什么都没发生。为什么?

如何找到使用api的其他设备,并将它们连接在一起? 或者任何其他方法都可以通过蓝牙传输数据?

1 个答案:

答案 0 :(得分:0)

最后我修复它。当我设置session.available = YES时,它会查找其他会话,方法:

- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state

将被召唤。

您在搜索时不得释放会话!!!