Unity GameCenter SDK — работа с игровым профилем
GameCenter SDK даёт доступ к игровому профилю пользователя: можно получать текущие данные профиля и синхронизировать их с новыми данными.
На текущем этапе SDK работает только если на устройстве уст ановлен RuStore и пользователь авторизован в RuStore. Если RuStore не установлен или пользователь не авторизован, методы вернут ошибку.
Подключение в проект
- Установка через Package Manager
- Установка через .unitypackage
- Клонирование репозитория
Для подключения скачайте со страницы upm_tgz пакеты:
ru.rustore.core-x.y.z.tgzru.rustore.pay-x.y.z.tgz
Импортируйте пакеты в проект через Package Manager (Window → Package Manager → + → Add package from tarball...).
Зависимости подключаются автоматически с помощью External Dependency Manager.
- Откройте окно менеджера пакетов (Window → Package Manager → + → Add package from git URL...).
- Используйте ссылку https://github.com/googlesamples/unity-jar-resolver.git?path=/upm для подключения пакета External Dependency Manager.
- Для устранения ошибки
Google.IOSResolver.dll will not be loadedустановите модуль сборки iOS для вашей версии Unity (UnityHub → Installs → Ваша версия Unity → Add modules → iOS Build Support).
Assembly 'Packages/com.google.external-dependency-manager/ExternalDependencyManager/Editor/1.2.182/Google.IOSResolver.dll' will not be loaded due to errors:
Unable to resolve reference 'UnityEditor.iOS.Extensions.Xcode'. Is the assembly missing or incompatible with the current platform?
Reference validation can be disabled in the Plugin Inspector.
Если вы используете операционную систему macOS, измените настройки утилиты архивации. В настройках Archive Utility снимите флажок Keep expanding if possible. В противном случае архив проекта будет скачан некорректно.
Для подключения скачайте файл RuStoreUnityPaySDK-version.unitypackage и импортируйте его в проект (Assets → Import Package → Custom Package). Зависимости подключаются автоматически с помощью **External Dependency Manager **(включен в .unitypackage).
Если вы используете операционную систему MacOS, измените настройки утилиты архивации. В настройках Archive Utility снимите флажок Keep expanding if possible. В противном случае архив проекта будет скачан некорректно.
Для корректной обработки зависимостей SDK выполните следующие настройки.
Репозиторий содержит исходный код плагина и демонстрационный проект, содержащий представление работы всех методов SDK.
Не используйте кнопку "Код → Скачать" на сайте GitFlic – этот метод не загружает файлы из Git LFS.
Перед клонированием репозитория скачайте и установите инструменты:
После установки выполните в командной строке:
git lfs install
Для клонирования репозитория воспользуйтесь набором команд:
git clone https://gitflic.ru/project/rustore/unity-rustore-pay-sdk.git
cd unity-rustore-pay-sdk
git lfs pull
Для корректной обработки зависимостей SDK выполните следующие настройки.
-
Откройте настройки проекта: Edit → Project Settings → Player → Android Settings.
-
В pазделе Publishing Settings включите следующие настройки.
- Custom Main Manifest.
- Custom Main Gradle Template.
- Custom Gradle Properties Template.
-
В разделе Other Settings настройте:
- package name.
- Minimum API Level = 24.
- Target API Level = 34.
Работа с игровым профилем
Получение игрового профиля
Используйте метод GetGameProfile для асинхронного получения текущего профиля пользователя.
GameCenterClient.Instance.GetGameProfile(
onFailure: (error) => {
// Process error
},
onSuccess: (result) => {
// Process success
}
);
Синхронизация игрового профиля
Используйте метод SyncGameProfile для синхронизации профиля с новыми данными.
Рекомендуем экранировать JSON, передаваемый в параметр
data, чтобы вложенный JSON корректно передавался как строка (во избежание ошибок сериализации/десериализации).
var data = "{}";
GameCenterClient.Instance.SyncGameProfile(
data,
onFailure: (error) => {
// Process error
},
onSuccess: (result) => {
// Process success
}
);
Модель данных
GameProfile
Игровой профиль пользователя.
public class GameProfile {
public string data { get; }
}
data— строка с данными игрового профиля (формат определяете вы, обычно JSON).
Обработка ошибок
GameCenter SDK выбрасывает исключения — подклассы RuStoreGameCenterException.
Обрабатывайте их, чтобы показать пользователю корректные сообщения и предпринять действия.
GameCenterClient.Instance.GetGameProfile()
onFailure: (error) => {
switch (error) {
case RuStoreGameCenterException.RuStoreGameCenterUserUnauthorizedException:
// Пользователь не авторизован в RuStore
break;
case RuStoreGameCenterException.RuStoreGameCenterNetworkException:
// Сетевая ошибка
break;
case RuStoreGameCenterException.RuStoreGameCenterCommonException:
// Общая ошибка GameCenter (ошибка при извлечении данных из приложения RuStore)
break;
case RuStoreGameCenterException.RuStoreGameCenterClientAlreadyExist:
// Повторное создание клиента (экземпляр уже существует)
break;
case RuStoreGameCenterException.RuStoreGameCenterClientNotCreated:
// Доступ к клиенту до его создания
break;
default:
// Другая ошибка
},
onSuccess: (result) => {
// Process success
}
};
Доступные исключения:
RuStoreGameCenterException.RuStoreGameCenterUserUnauthorizedException— пользователь не авторизован в RuStore.RuStoreGameCenterException.RuStoreGameCenterNetworkException— сетевая ошибка.RuStoreGameCenterException.RuStoreGameCenterCommonException— общая ошибка GameCenter (не удалось получить данные из приложения RuStore).RuStoreGameCenterException.RuStoreGameCenterClientAlreadyExist— попытка создать несколько экземпляровGameCenterClient.RuStoreGameCenterException.RuStoreGameCenterClientNotCreated— обращение к клиенту до его инициализации.