Разработка iOS: при получении приглашения Game Center как получить объект GKMatch? - PullRequest
4 голосов
/ 09 января 2011

Я создаю игру для iPhone, в которой используется Game Center, и мне трудно понять, как начать игру, которая началась с получения приглашения от друга. документы говорят это ...

Параметр acceptInvite имеет значение не ноль, когда приложение получает приглашение напрямую от другого игрок. В этой ситуации другой Приложение игрока уже создал запрос на совпадение, так что это копия вашей заявки не нужна создать один.

В соответствии с этим мне не нужно создавать запрос на совпадение, так как игрок, который сделал приглашение, уже создал его. Если да, как мне получить объект GKMatch, необходимый для отправки / получения данных от другого игрока? Единственный известный мне способ получения объекта GKMatch - это создать запрос на совпадение и вызвать метод findMatchForRequest, который, как говорят документы, я не должен делать.

Единственный пример кода, который у них есть для этого, включает создание и использование GKMatchmakerViewController, который я не могу использовать, так как я создаю свои собственные пользовательские представления.

Большое спасибо за вашу мудрость!

Ответы [ 3 ]

1 голос
/ 09 января 2011

Я получил ответ от одного из инженеров Apple по этому поводу, вот что он сказал ...

Вы можете выполнить автоматическое сопоставление с пользовательскими представлениями, но нет возможности использовать приглашениябез использования GKMatchmakerViewController.Поэтому вы должны следовать примеру кода.

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

0 голосов
/ 16 мая 2012

Несмотря на то, что сказал инженер Apple, можно попробовать что-то вроде этого, чтобы пригласить, не используя пользовательское представление:

[[GKLocalPlayer localPlayer] loadFriendsWithCompletionHandler:^(NSArray *friends, NSError *error) {



[GKPlayer loadPlayersForIdentifiers:friends withCompletionHandler:^(NSArray *players, NSError *error) {
    for (GKPlayer *player in players) {
        NSLog(@"%@",player.alias); //here I'm just logging the aliases but the array players can be used in any way
    }
}];

}];

Теперь, если пользователь выбирает игроков из этого списка в пользовательском представлении, у GKMatchRequest есть свойство PlayersToInvite, и мы можем установить для этих игроков это свойство. И создайте совпадение программно, используя этот запрос.

Это выглядит очень возможным, но я не пробовал, если честно

0 голосов
/ 12 июля 2011

У меня есть исправление проблемы с приглашением в игровой центр. Поэтому выполните следующие действия: -
1- убедитесь, что в настройках учетной записи игрового центра включены ваши push-уведомления и приглашения друзей.
2-теперь установите последнюю версию игры Fruit Ninja
3-откройте игровой центр и войдите, затем поместите его в фоновом режиме.
Фруктовый ниндзя с четырьмя открытыми игроками прямо в новую игру => мультиплеер => gamecenter
5 - теперь вы увидите два варианта (пригласить друга и играть сейчас в правом верхнем углу)
6 Нажмите кнопку «Играть сейчас», чтобы игровой центр нашел для вас незваную игру.
7-когда игра начинается, и вы можете увидеть имя вашего незваного друга в правом верхнем углу. После того, как игра закончится, перейдите непосредственно к игровому центру в фоновом режиме и в разделе игр и перейдите к фруктовым ниндзя в списке игр. Здесь вы увидите недавно сыгранную опцию, Touch it. Здесь вы увидите вверху списка имя игрока (с кем вы играли), коснитесь имени и немедленно отправите ему запрос на добавление в друзья.
8-если он примет запрос goto friends => (ваш недавно добавленный друг) => играется вместе (фруктовый ниндзя) => игра в хит (справа вверху)
9-сейчас игра откроется, и вы увидите страницу GC. Нажмите кнопку приглашения и выберите недавно добавленного друга, а затем отправьте, ожидая его и готовясь к игре.

Теперь ваш gc id подтвержден, и вы можете пригласить любого из ваших друзей и играть в любую игру (которая поддерживает функцию приглашения)

...