0
GKSession을 사용하여 두 장치를 연결하려고합니다. 장치가 동일한 WiFi 네트워크에 연결되어 있으면 작동하지만 다른 장치에 연결할 때 작동하지 않습니다. 이것은 내가 그것을 GKSession를 사용하여 가능하면 확실하지 않다 GKSessionGKSession을 사용하여 서로 다른 WiFi 네트워크에서 두 장치를 연결합니다.
내 코드chatSession = [[GKSession alloc] initWithSessionID:AppName displayName:name sessionMode:GKSessionModePeer];
[chatSession setDataReceiveHandler:self withContext:nil];
chatSession.delegate = self;
chatSession.available = YES;
-(void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state{
NSLog(@"state=%d", state);
if(state == GKPeerStateDisconnected)
{
// A peer disconnected
chatSession.available = YES;
NSLog(@"Disconnected");
[data removeAllObjects];
chatInput.hidden = YES;
}
else if(state == GKPeerStateConnected)
{
// You can now send messages to the connected peer(s)
NSData *imgData = UIImageJPEGRepresentation(myImage, 0.5);
if(imgData==nil)
NSLog(@"myImage is nil");
NSError *err;
//NSLog(@"pid=%@", pID);
NSLog(@"before sending image");
[chatSession sendData:imgData toPeers:[NSArray arrayWithObject:pID] withDataMode:GKSendDataReliable error:&err];
NSLog(@"after send data");
if(err)
NSLog(@"error:%@", err.description);
}
else if (state == GKPeerStateAvailable)
{
pID = peerID;
[session connectToPeer:peerID withTimeout:60*120];
}
}
-(void)session:(GKSession *)session didReceiveConnectionRequestFromPeer:(NSString *)peerID{
// We can now decide to deny or accept
bool shouldAccept = YES;
if(shouldAccept)
{
pID = peerID;
[session acceptConnectionFromPeer:peerID error:nil];
}
else
{
[session denyConnectionFromPeer:peerID];
}}
입니다. 애플
GKSession 개체를 발견하고 블루투스 또는 Wi-Fi를 사용하여 주변의 iOS 장치에 연결할 수있는 기능을 제공합니다에 따르면
.
GKSession을 사용하여 채팅 응용 프로그램을 만들 때 도움을주십시오.