2013-02-21 39 views
0

使用GKPeerPickerController我可以通过bluetogether一起轻松连接两个ios设备,但它只能在GKSessionModePeer模式下使用。如何在GKSessionModeServer/GKSessionModeClient模型中找到并连接设备

我使用的代码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的设备并将它们连接在一起? 或者任何其他方法可以通过蓝牙传输数据?

+0

您可能想尝试使用'GKSessionModePeer',而且您确定两个应用程序具有相同的包ID?他们运行着不同的代码,这看起来有点奇怪。 – 2013-02-22 22:20:40

回答

0

最后我解决它。当我设置session.available = YES,它会寻找其他会话,方法:

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

将被调用。

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