首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GameKit: GKSession手册

GameKit: GKSession手册
EN

Stack Overflow用户
提问于 2010-02-19 14:11:32
回答 2查看 4.6K关注 0票数 6

我想用GKSession连接两个设备,一个作为服务器启动,另一个作为客户机启动。使用此配置,我不能使用GKPeerPickerController。

我在连接这两种设备时遇到了问题:

只使用蓝牙的

  • : WiFi:至少在设备之间有一些数据交换,但是没有成功的连接。

在接口文件中,我有

代码语言:javascript
复制
GKSessionDelegate
GKSession *session;

在实现中,我使用以下代码启动服务器:

代码语言:javascript
复制
session = [[GKSession alloc] initWithSessionID:@"iFood"  displayName:nil sessionMode:GKSessionModeClient];
session.delegate = self;
session.available = YES;

客户端开始使用以下代码:

代码语言:javascript
复制
session = [[GKSession alloc] initWithSessionID:@"iFood"  displayName:nil sessionMode:GKSessionModeServer];
session.delegate = self;
session.available = YES;

我怎样才能强制使用蓝牙而不是WiFi呢?

此外,我还执行了这些呼吁:

代码语言:javascript
复制
-(void)session:(GKSession *)session didReceiveConnectionRequestFromPeer:(NSString *)peerID {
NSLog(@"Someone is trying to connect"); 
}

- (BOOL)acceptConnectionFromPeer:(NSString *)peerID error:(NSError **)error {
NSLog(@"acceptConnectionFromPeer");
}

当我开始的时候,我把它放到调试器中:

代码语言:javascript
复制
Listening on port 50775
2010-02-19 14:55:02.547 iFood[3009:5103] handleEvents started (2)

当另一个装置开始发现的时候,我得到了这个:

代码语言:javascript
复制
~ DNSServiceBrowse callback: Ref=187f70, Flags=2, IFIndex=2 (name=[en0]), ErrorType=0 name=00eGs1R1A..Only by Audi regtype=_2c3mugr67ej6j7._udp. domain=local.
~ DNSServiceQueryRecord callback: Ref=17bd40, Flags=2, IFIndex=2 (name=[en0]), ErrorType=0 fullname=00eGs1R1A\.\.Only\032by\032Audi._2c3mugr67ej6j7._udp.local. rrtype=16 rrclass=1 rdlen=18 ttl=4500
** peer 1527211048: oldbusy=0, newbusy=0
~ DNSServiceBrowse callback: Ref=187f70, Flags=2, IFIndex=-3 (name=[]), ErrorType=0 name=00eGs1R1A..Only by Audi regtype=_2c3mugr67ej6j7._udp. domain=local.
GKPeer[186960] 1527211048 service count old=1 new=2
~ DNSServiceQueryRecord callback: Ref=17bd40, Flags=2, IFIndex=-3 (name=[]), ErrorType=0 fullname=00egs1r1a\.\.only\032by\032audi._2c3mugr67ej6j7._udp.local. rrtype=16 rrclass=1 rdlen=18 ttl=7200
** peer 1527211048: oldbusy=0, newbusy=0
~ DNSServiceBrowse callback: Ref=187f70, Flags=2, IFIndex=-3 (name=[]), ErrorType=0 name=00TF5kc1A..Only by Audi regtype=_2c3mugr67ej6j7._udp. domain=local.
~ DNSServiceQueryRecord callback: Ref=188320, Flags=2, IFIndex=-3 (name=[]), ErrorType=0 fullname=00tf5kc1a\.\.only\032by\032audi._2c3mugr67ej6j7._udp.local. rrtype=16 rrclass=1 rdlen=18 ttl=7200
** peer 1723356125: oldbusy=0, newbusy=0
~ DNSServiceQueryRecord callback: Ref=188320, Flags=2, IFIndex=2 (name=[en0]), ErrorType=0 fullname=00TF5kc1A\.\.Only\032by\032Audi._2c3mugr67ej6j7._udp.local. rrtype=16 rrclass=1 rdlen=18 ttl=4500
** peer 1723356125: oldbusy=0, newbusy=0

我在这里错过了什么?

我确信这两种设备都启用了蓝牙,并连接到同一个WiFi中。

谢谢,

r。

EN

回答 2

Stack Overflow用户

发布于 2013-01-07 14:12:58

我想你很想接受与客户的联系。在收到"didReceiveConnectionRequestFromPeer“回调后,您需要接受与客户端的连接,如下所示:

代码语言:javascript
复制
-(void)session:(GKSession *)session didReceiveConnectionRequestFromPeer:(NSString *)peerID {
  NSLog(@"Someone is trying to connect"); 
  NSError *error;
  [gkSession acceptConnectionFromPeer:peerID error:&error];
  if(error)
    NSLog(@"Error on accept connection with peer: ", error);
}

在此之后,您将在这里收到"GKPeerStateConnected“:

代码语言:javascript
复制
- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state{}

希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2010-02-21 07:33:52

我也遇到过类似的问题,但从上面的描述来看,我认为你犯了一些错误:

GKSession只实现BT;如果使用选择器,则可以为处理WiFi连接提供单独的方法。

"didReceiveConnectionRequestFromPeer“方法应该调用会话对象上的"acceptConnectionFromPeer”方法--您没有在您的委托上实现"acceptConnectionFromPeer“。

为了进行调试,您应该在委托方法"session:peer:didChangeState:“(参见http://developer.apple.com/iPhone/library/documentation/GameKit/Reference/GKSessionDelegate_Protocol/Reference/Reference.html )中记录状态更改。当对等点“可用”时,可以调用"connectToPeer:";当“连接”时,可以使用"sendData:toPeers:“。

对于建立连接后的IO,您希望在会话上调用"setDataReceiveHandler:withContext:“方法。

早些时候,我在代码中输入了一些格式,但现在已经开始工作了。

祝好运。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2296856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档