API Game Center + API для покупок внутри приложения = две разные учетные записи для одного приложения? - PullRequest
2 голосов
/ 25 октября 2010

Если у меня есть приложение, которое поддерживает Game Center, и я хотел бы предоставить Достижения для завершения пакета головоломок, который продается как покупка в приложении, как мне синхронизировать учетную запись iTunes, которая взимается за покупку в приложении с учетной записью пользователя Game Center, которая делает покупку? Насколько я понимаю, это две отдельные учетные записи пользователей, доступ к которым осуществляется в двух разных местах (учетная запись Game Center доступна в приложении Game Center, а учетная запись iTunes - в приложении «Настройки»).

Как мне избежать этого ...

  1. Game Center Player1 входит в систему, запускает мое приложение и приобретает пакет головоломок
  2. Game Center Player1 выходит из системы, Game Center Player2 входит в систему, запускает мое приложение и воспроизводит набор головоломок, который приобрел Player1, и Player2 получает награду.
  3. Game Center Player2 выходит из системы, Game Center Player1 входит в систему и находит приобретенный пакет головоломок как уже выполненный, поэтому Player1 не может получить то же достижение.

Я что-то неправильно понимаю, как работают эти учетные записи? Если нет, есть ли способ синхронизировать учетную запись Game Center с учетной записью iTunes, когда игроки входят и выходят из моей игры? Есть ли какой-нибудь способ обойти эту проблему? Похоже, что это будет довольно распространенной проблемой для любых многопользовательских игр, продающих контент.

Большое спасибо!

Ответы [ 4 ]

2 голосов
/ 26 октября 2010

Итак, вот как я собираюсь это сделать, это на самом деле довольно простой подход.Я собираюсь локально отслеживать прогресс пользователей в приобретенных пакетах пазлов, используя основные данные, поскольку он быстро запускается и запускается.Каждый раз, когда новый пользователь GC входит в систему, я создаю новый пользовательский объект, отслеживаю его прогресс в пакетах головоломок и сообщаю о достижениях в GC, когда это необходимо.Когда этот пользователь GC войдет в систему позже, я просто настрою состояние пакетов головоломки, чтобы они соответствовали их текущему прогрессу, определенному в основных данных.Таким образом, любая учетная запись iTunes может приобрести пакеты головоломок, и они по сути будут доступны любому, кто использует устройство.Всякий раз, когда какие-либо пользователи GC входят в GC и играют в мое приложение, все они будут иметь доступ к одним и тем же приобретенным пакетам головоломок, но их прогресс и достижения будут сохраняться независимо от других пользователей GC.

Если GC не установлен на устройстве, я могу отключить все функции GC и просто запустить приложение, так как по умолчанию есть только один плеер.

Это должно быть просто сделать.

2 голосов
/ 26 октября 2010

Это хороший вопрос.:) Что касается достижений, я думаю, вы можете сохранить их на устройстве с playerId из вошедшего в систему GKPlayer, и как только достижение будет завершено для вошедшего в систему игрока, вы синхронизируете его с Game Center.

Что касается синхронизации учетных записей iTunes и Game Center, я действительно не знаю.Обычно вы храните некоторую информацию о том, была ли сделана покупка (т.е. доступна ли функция) на устройстве.Было бы логично, чтобы использование этой функции (или разрешение на ее использование) зависело от устройства, а не от пользователя GC?Но что произойдет, если кто-то использует свою учетную запись, чтобы снова и снова загружать ваш контент на устройства своих друзей?

Хмм ... Я надеюсь, что некоторые другие люди поделятся своими мыслями по этому поводу.Но я обнаружил, что вопросы Game Center получают очень мало просмотров и ответов :(

0 голосов
/ 23 февраля 2011

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

0 голосов
/ 26 октября 2010

Я пытаюсь найти решение и для решения этой проблемы. При использовании режима доставки серверного продукта проблема может быть в значительной степени решена. Приложение отправляет приобретенные товары на сервер, а затем отправляет их в приложение после проверки учетных данных. Есть некоторые ключевые случаи, которые я до сих пор не знаю, как разрешить, в основном для обработки случая, когда весь поток прерывается, что зависит от реализации IAP. Все еще не уверен на 100%.

...