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

Ios 如何在GKSessionModeServer/GKSessionModeClient模型中查找和连接设备,ios,bluetooth,gamekit,Ios,Bluetooth,Gamekit,使用GKPeerPickerController我可以轻松地通过Blue将两个ios设备连接在一起。但它仅在gkSessionModelPeer模式下 我使用代码在GKSessionModeServer模式下创建会话 GKSession *session=[[GKSession alloc] initWithSessionID:nil displayName:nil sessionMode:GKSessionModeServer]; session.delegate = self; sessio

使用
GKPeerPickerController
我可以轻松地通过Blue将两个ios设备连接在一起。但它仅在gkSessionModelPeer模式下

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

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

- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state
将被调用


当会话正在搜索时,您不能释放它

您可能想改为尝试
GKSessionModePeer
,您确定两个应用程序具有相同的捆绑ID吗?他们运行不同的代码,这似乎有点奇怪。