我在让 GKSession 工作时遇到问题。下面是我按下特定按钮时执行的代码。
GKSession *session;
if (connectButtonHasBeenPressed == false) {
NSLog(@"connectToBluetoothDevice has been called");
connectButtonHasBeenPressed = true;
GKSession *session = [[GKSession alloc] initWithSessionID:@"Unicorn" displayName:nil sessionMode:GKSessionModePeer];
[session setDataReceiveHandler:self withContext:nil];
[session setDelegate:self];
[session setAvailable:YES];
NSLog(@"Session ID: %@", [session sessionID]);
NSLog(@"Currently Available Peers: %i", [[session peersWithConnectionState:GKPeerStateAvailable] count]);
if ([session isAvailable]) {
NSLog(@"The Session Is Available");
}
[connectToDeviceButton setTitle:@"Searching..." forState:UIControlStateNormal];
}
else {
NSLog(@"Currently Available Peers: %i", [[session peersWithConnectionState:GKPeerStateAvailable] count]);
}
第一次按下按钮后,一切似乎都正常。之后每次我按下按钮时,它都会打印“当前可用的对等点:0”。如果我没有两个设备并排放置,这将是预期的输出,同时按下按钮运行程序。我还在这个类中实现了所有 GKSessionDelegate 方法,它们都将消息记录到控制台。这些方法都没有运行过。所有这些都向我表明这些设备找不到彼此。
但是,我已经运行了示例程序 GKRocket,它使用 GKSession 连接两个设备,并且在这两个相同的设备之间运行良好。我已经将 GKRocket 的代码与我的程序代码进行了比较,我没有发现任何我认为会影响 GKSession 的差异。
有什么建议么?