首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么iphone要在GKSession上搜索自己?

为什么iphone要在GKSession上搜索自己?
EN

Stack Overflow用户
提问于 2011-05-02 15:04:18
回答 3查看 315关注 0票数 0

GKSession正在搜索自己(相同的设备),为什么?即使在GKRocket的例子中,为什么会这样呢?

我怎么才能停止不进行自我连接呢?

EN

回答 3

Stack Overflow用户

发布于 2011-05-02 16:26:27

确保只有一个会话从设备打开。GKSession查找具有匹配id的会话...如果您使用相同的id从您的设备创建一个新会话,它将查找较旧的会话。

票数 1
EN

Stack Overflow用户

发布于 2012-02-15 07:22:18

你要做的就是使用:

代码语言:javascript
复制
session.available = NO;

在正在搜索的设备上。只需在搜索结束时将其设置为YES即可。

如果会话是AppDelegate的一部分:

代码语言:javascript
复制
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
票数 0
EN

Stack Overflow用户

发布于 2013-09-18 01:24:29

我在修改过的GKRocket版本中遇到了这个问题。当一个对等体断开连接时,应用程序返回到前面的屏幕,然后重新加载启动会话的视图。

您需要通过在应用程序中尽早实例化创建GKSession的类来修复此问题。用户在关闭应用程序之前,任何时候都不能再向后导航。然后,在整个导航堆栈中维护一个指向会话控制器类的指针,以便您可以调用对等列表等。

这些方法来自AppDelegate之后的第一个视图控制器

代码语言:javascript
复制
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

//We setup the GKSession at this stage so that we do not create duplicate sessions as
//the user navigates to and from the game lobby controller finding and managing peers
manager = [[SessionManager alloc] init];
manager.lobbyDelegate = nil;  //There is no game lobby at this stage so we nil this.
[manager setupSession];
// call the session manager's setup method to create the session. It will start
//looking for peers right away, but we won't see that until we go to the game lobby

}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
//Pass a pointer to the session manager along the line of segues
[[segue destinationViewController] setManager:self.manager];
}

这段代码是从GKRocket修改而来的-请查看该教程,了解像setupSession这样的方法是做什么的。

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

https://stackoverflow.com/questions/5854364

复制
相关文章

相似问题

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