GKSession을 작동시키는 데 문제가 있습니다. 아래는 특정 버튼을 눌렀을 때 실행되는 코드입니다.iOS 6.1에서 GKSession (Bluetooth)을 올바르게 설정하는 방법
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 메서드를 모두 콘솔에 메시지로 기록합니다. 그 방법들 중 어느 것도 실행되지 않습니다. 이 모든 것이 장치가 서로를 찾을 수 없다는 것을 나에게 알릴 것입니다.
그러나 GKSession을 사용하여 두 장치를 연결하는 샘플 프로그램 GKRocket을 실행했으며이 두 장치간에 잘 작동합니다. GKRocket의 코드를 프로그램 코드와 비교해 보았습니다. GKSession에 영향을 줄 수 있다고 생각되는 차이점을 발견하지 못했습니다.
제안 사항?
또한 iOS 5와 iOS 6의 기기간에 연결 문제가있을 수 있습니다. Apple 문제인 것으로 보이며 버그 수정이있는 것 같지 않습니다. – Baza207
감사합니다. 나는 GKSession의 두 가지 경우를 보지 못했다. –