почему iphone ищет себя в GKSession? - PullRequest
0 голосов
/ 02 мая 2011

GKSession ищет себя (на том же устройстве), почему?Даже в GKRocket Пример, почему так?

Как я могу прекратить не устанавливать самостоятельное соединение?

Ответы [ 3 ]

1 голос
/ 02 мая 2011

убедитесь, что с устройства открыт только один сеанс. GKSession ищет сеансы с совпадающим идентификатором ... если вы создадите новый сеанс с вашего устройства с тем же идентификатором, он найдет более старый сеанс ..

0 голосов
/ 17 сентября 2013

Я получил эту проблему в модифицированной версии GKRocket. Когда одноранговый узел отключился, приложение вернулось на передний экран, а затем перезагрузило представление, инициировавшее сеанс.

Вам необходимо исправить это, создав экземпляр класса, который создает GKSession как можно раньше в приложении. Пользователь не должен перемещаться дальше, пока он не закроет приложение. Затем сохраните указатель на класс контроллера сеанса во всем стеке навигации, чтобы вы могли вызывать списки пиров и т. Д.

Эти методы относятся к первому контроллеру представления после AppDelegate

- (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 голосов
/ 15 февраля 2012

Что вам нужно сделать, это использовать:

session.available = NO;

на устройстве, которое ищет. Просто установите значение YES, когда поиск закончится.

Если сеанс является частью AppDelegate:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...