iOS и игровой центр - выбор друзей для хостинговых игр - PullRequest
1 голос
/ 17 декабря 2010

Я экспериментирую с добавлением поддержки Game Center в нашу игру.Он уже имеет поддержку OpenFeint, но мы также хотели бы поддержать GC.

Базовая аутентификация и использование довольно просты и, кажется, работают довольно хорошо (за исключением того, что песочница ужасно нестабильна).Однако из-за нашей архитектуры мы хотели бы использовать GC главным образом для выбора друзей, а не для полной поддержки приглашений.Итак, я ищу способ использовать что-то вроде GKMatchmakerViewController, чтобы выбирать друзей, а не отправлять им приглашения.Я хотел бы показать обычное представление, в котором игрок может выбрать друзей, а затем просто вернуть выбранных друзей. Я не хочу, чтобы представление / GC вообще отправляло выбранным друзьям.

    GKMatchmakerViewController * mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
    mmvc.matchmakerDelegate = my_delegate;
    mmvc.hosted = YES;

Это должно в соответствии с документацией вызвать метод моего делегата didFindPlayers , но, похоже, он не работает.Флаг hosted не имеет никакого эффекта, и с ним, и без него GC, кажется, пытается отправить что-то выбранному другу (-ям), а затем кратко показывает текст Несовместимый в пользовательском интерфейсе и ине обращайте внимания на выбранного друга.

Я делаю здесь что-то принципиально неправильное или то, что я хочу сделать, просто невозможно?Что на самом деле означает ошибка Несовместимый ?Я работаю между двумя iPad, в которых оба пользователя-песочницы вошли в систему. Можно ли на самом деле выбирать друзей, не уведомив их?показывает, когда я пытаюсь выбрать друзей странно.Я не нашел никакой документации относительно того, что это могло бы означать и что могло вызвать это.Простое предположение состоит в том, что GC почему-то считает, что у пользователей с песочницей установлены разные версии моей игры, и они как-то несовместимы.Эта игра уже доступна в магазине приложений, но без GC-сетей.Может ли среда песочницы каким-то образом получить какую-то информацию из этого?Хотя на планшетах не установлена ​​старая версия игры.

Ответы [ 2 ]

3 голосов
/ 20 сентября 2012

Для тех, кто все еще испытывает эту проблему.Посмотрите на этапы сборки, раздел Run Script.В моем случае я использовал один из этих сценариев, который автоматически увеличивает число сборок, поэтому обычно следите за такими вещами.Но Game Center не будет уживаться с таким подходом.Сценарий на самом деле принимает CFBundleVersion и увеличивает его на 1 (есть различные методы, один из которых я использую только +1).

#!/bin/bash
buildPlist=${INFOPLIST_FILE}
CFBundleVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $buildPlist)
CFBundleVersion=$(($CFBundleVersion + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" $buildPlist

Итак, я устанавливаю сборку на iPhone, номер сборки, скажем, 295, затем я устанавливаю ее на iPad, и она имеет версию сборки 296, которая совпадает с версией комплекта.И две версии несовместимы с точки зрения Game Center.

Обычный (мгновенный) многопользовательский режим просто говорит «Несовместимо» при попытке пригласить друга.Пошаговый режим вообще ничего полезного не показывает.

Все это сбивает с толку, поскольку на iTunesConnect в списке совместимости Game Center отображаются короткие версии строк (CFBundleShortVersionString), поэтому я предположил, как только я поставлю тот жезначение в поле «Версия» настроек проекта, оно будет работать.Однако это не так, «Build» должен быть таким же.

0 голосов
/ 23 марта 2011

Я могу подтвердить, что CFBundleVersion в Info.plist должен точно совпадать. У меня было одно устройство с версией «4.00», а другое - с «4.0», и я получал сообщение «Несовместимо». Изменение их обоих на «4,00» решило проблему.

...