Проблемы Game Center в iOS 10

Я реализовал функции Game Center, такие как достижения и таблицы лидеров, и теперь работаю над задачами. У меня сложилось впечатление, что мне не нужно было добавлять какой-либо дополнительный код — если бы у меня были достижения или таблицы лидеров, игроки могли бы отправлять вызовы своим друзьям. Но теперь, в iOS10, у вас больше нет возможности добавлять игроков в друзья — вызовы решаются через iMessages. Проблема в том, что я не вижу этой функции нигде на экране GKViewController. Если вы выберете достижение/счет рейтинга, вы можете нажать «Вызов друзьям», но он предлагает только игроков, которые уже есть в вашем списке друзей, а не в вашем списке контактов. Apple также устарела GKChallengesViewController, поэтому я не уверен, где посмотреть, как это сделать.

Кто-нибудь знает, как добавить функцию iMessage Challenges в Game Center в iOS 10?

Обновление: я видел, что эта функция находится в GKMatchmakerViewController, но, похоже, это для вещей многопользовательского типа. Я до сих пор не знаю, как использовать это, чтобы просто отправлять вызовы.


person claassenApps    schedule 03.01.2017    source источник
comment
все рабочие функции вы можете найти здесь. developer.apple.com/reference/gamekit   -  person John    schedule 02.02.2017


Ответы (1)


Из Документы Apple:

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

Также есть несколько примеров того, как ставить задачи и как найти игроков, которых можно пригласить, например:

- (void) challengePlayersToCompleteAchievement: (GKAchievement*) achievement
{
    [achievement selectChallengeablePlayers:[GKLocalPlayer localPlayer].friends withCompletionHandler:^(NSArray *challengeablePlayerI, NSError *error) {
        if (challengeablePlayers)
        {
            [self presentChallengeWithPreselectedPlayers: challengeablePlayers];
        }
    }];
}

...or:

- (void) challengeLesserMortalsForScore: (int64_t) playerScore inLeaderboard: (NSString*) leaderboard
{
    GKLeaderboard *query = [[GKLeaderboard alloc] init];
    query.leaderboardIdentifier = leaderboard;
    query.playerScope = GKLeaderboardPlayerScopeFriendsOnly;
    query.range = NSMakeRange(1,100);
    [query loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error) {
        NSPredicate *filter = [NSPredicate predicateWithFormat:@"value < %qi",playerScore];
        NSArray *lesserScores = [scores filteredArrayUsingPredicate:filter];
        [self presentChallengeWithPreselectedScores: lesserScores];
    }];
}

Судя по всему, вы по-прежнему можете приглашать только игроков, которые уже являются частью игрового центра, то есть никаких произвольных «контактов» из списка контактов (что имеет смысл), но это только предположение.

person Double M    schedule 10.02.2017
comment
Спасибо за сообщение. Из видео WWDC 2016 я исходил из предположения, что вызовы можно отправлять через список контактов, а не через список друзей Game Center, к которому больше нельзя добавлять. - person claassenApps; 10.02.2017