2

大家好我正在使用以下代码来识别蓝牙上的可用设备。

_session = [[GKSession alloc]initWithSessionID:sessionid displayName:sessionid sessionMode:GKSessionModePeer];

_session.delegate = self;

[_session setDataReceiveHandler:self withContext:nil];

_session.available = YES;

我还添加了委托方法

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

NSLog(@"state : %@",state);

switch (state)
{
    case GKPeerStateConnected:
    {

        NSLog(@"%@ connected ",peerID);

        break;
    }
    case GKPeerStateDisconnected:
    {

        NSLog(@"%@ disconnected ",peerID);
        break;
    }
    case GKPeerStateAvailable:
    {
        NSLog(@"Available : %@",peerID);
        break;
    }
    case GKPeerStateUnavailable:
    {
        NSLog(@"Un Available : %@",peerID);
        break;
    }
    default:
        break;
   }

 }

但是这个方法永远不会被调用。可能是什么问题?请帮我 !!!

4

2 回答 2

1

好吧,代码看起来不错。你有正确声明的代表吗?我的意思是 < GKSessionDelegate > 在你的 .h ?

您可以尝试在没有 displayName 的情况下初始化 GKSession:

_session = [[GKSession alloc]initWithSessionID:sessionid displayName:nil sessionMode:GKSessionModePeer];
于 2011-11-15T13:17:02.760 回答
1

确保他们使用相同的 sessionID。尝试使用 NULL 作为会话 ID,应用程序将为您创建一个。

于 2012-01-18T01:38:51.197 回答