Google Play Games Services V2🔗

Google Play Games Services V2 - набор сервисов, который позволяет вашим пользователям авторизоваться, отслеживать свои лучшие результаты в таблице лидеров, сравнивать их достижения, приглашать друзей сыграть в игру. Приложения могут включать любые или все из следующих функций, поддерживаемых Google Play Games:
- Рейтинги — сравнивает оценки с друзьями игрока и с другими игроками со всего мира
- Достижения — очки присуждаются игрокам в составе системы отслеживания достижений Google Play Games. Игроки могут зарабатывать очки, выполняя определённые внутриигровые задачи. Игроки не могут использовать раздел для чего-либо иного, кроме как оценить прогресс в играх. Он был разработан так, чтобы игроки могли общаться и конкурировать друг с другом.
Важно
Основные отличия от Google Play Games Services V1 в том что:
- Авторизация пользователя происходит в момент запуска приложения.
- Отсутствует API для возможности разлогинить пользователя.
- Отсутствует API для получения клиентского токена.
- Отсутствует API для авторизации через
Google Sign In.
Предварительная настройка🔗
С предварительной настройкой можно ознакомиться в разделе GoogleSignIn - Предварительная настройка
Добавление зависимостей🔗
Далее необходимо добавить в проект MRGS SDK:
Unity:
Добавление в проект (общая инструкция)
Шаг 1. Добавьте источники
Для того, чтобы добавить MRGS в проект через Unity Package Manager (доступно с Unity 2018+) просто добавьте в файл Packages/manifest.json раздел scopedRegistries, добавив в него следующую запись:
{
"dependencies": {
...
},
"scopedRegistries": [
{
"name": "MRGS",
"url": "https://mrgs-nexus.my.games/repository/mrgs-uninty-plugins/",
"scopes": [
"games.my.mrgs"
]
}
]
}
Альтернативно, можно нажать Edit -> Project Settings -> Package Manager -> '+' in scoped registry section, и заполнить поля в соответствии с данными выше.
Шаг 2. Добавьте зависимость
- Нажмите
Window -> Package Manager -> select 'Packages: MyRegistries' from dropdown list, выберите пакетMRGSAuthenticationGoogleGamesиз списка, затем нажмите "Install" - Импортируйте модуль:
using MRGS;
- Загрузите последнюю версию библиотеки. Распакуйте архив.
- (Для интеграции unitypackage) В Unity нажмите
Assets -> Import Package -> Custom Package, и выберите пакетgames.my.mrgs.authenticationgooglegames.unitypackageиз скачанного архива. - (Для интеграции tgz) В Unity нажмите
Window -> Package Manager -> '+' -> Add package from tarball, и выберите пакетgames.my.mrgs.authenticationgooglegames-<version>.tgzиз скачанного архива. - Импортируйте модуль:
using MRGS;
Android:
Добавление в проект
Добавьте зависимость в build.gradle файл:
Скопируйте файлы MRGSAuthentication.aar и MRGSAuthenticationGoogleGames.aar в директорию libs вашего проекта. Добавьте необходимые зависимости в файл build.gradle
dependencies {
//...
implementation(name: 'MRGSAuthentication', ext:'aar')
implementation(name: 'MRGSAuthenticationGoogleGames', ext:'aar')
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.browser:browser:1.5.0'
implementation "com.google.android.gms:play-services-games-v2:17.0.0"
}
Настройка параметров MRGS🔗
Теперь вам необходимо указать полученный Web Client Id при инициализации MRGS
using MRGS;
public class MasterController : MonoBehaviour
{
void Awake()
{
// Setting up mrgs params
// ...
var modulesParams = new List<MRGSExternalSDKSettings>;
modulesParams.Add(new MRGSGooglePlayGamesParams(WEB_CLIENT_ID));
// Setting up external sdk params
// ...
IMRGSServerDataDelegate loadDelegate =...
MRGService.Instance.Initialize(serviceParams, modulesParams, loadDelegate);
}
}
import games.my.mrgs.MRGServiceParams;
import games.my.mrgs.MRGSModuleParams;
import games.my.mrgs.MRGService;
import games.my.mrgs.authentication.google.play.MRGSGooglePlayGames;
public class YourApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
final MRGServiceParams serviceParams = ...;
final List<MRGSModuleParams> moduleParams = ...;
// Setting External SDKs
final MRGSGooglePlayGamesParams googlePlayGamesParams = MRGSGooglePlayGamesParams.init("GOOGLE_CLIENT_ID");
moduleParams.add(googlePlayGamesParams);
MRGService.service(context, serviceParams, moduleParams);
}
}
Работа с MRGSAuthentication интерфейсом🔗
Для работы с Google Play Games воспользуйтесь классом MRGSAuthenticationGoogleGames. Обращаем внимание, что данный класс реализует основной интерфейс MRGSAuthentication, то есть имеет все методы этого интерфейса. Далее описана стандартная реализация интерфейса MRGSAuthentication:
Проверка статуса авторизации (залогинен ли пользователь):
Для обычного входа воспользуйтесь одним из методов:
import android.app.Activity;
import androidx.annotation.NonNull;
import games.my.mrgs.MRGSError;
import games.my.mrgs.authenticationMRGSCredentials;
import games.my.mrgs.authentication.MRGSLoginCallback;
import games.my.mrgs.authentication.google.play.MRGSGooglePlayGames;
MRGSGooglePlayGames.getInstance().login(activity, new MRGSLoginCallback() {
@Override
public void onSuccess(@NonNull MRGSCredentials credentials) {
// Handle result.
}
@Override
public void onError(@NonNull MRGSError error) {
// Handle error.
}
});
Чтобы получить всю информацию о текущем состоянии авторизации, информацию пользователя, статусе авторизации, воспользуйтесь методами:
//An object is returned that combines information about the user (identifier, name, email, etc.) and about the token.
MRGSAuthenticationGoogleGames.Instance.GetCredentials((MRGSAuthenticationCredential credentials, MRGSError error) => {
string resultDescription = "getCredentials:\nCredentials: " + credentials + "\nError:\n" + error;
MRGSLog.getInstance().addLog("MRGSAuthentication<Unity> - AppleGameCenter " + resultDescription);
if (!error) {
// Credentials data work
}
});
//Information about the user, identifier, name, email, etc. is returned separately.
MRGSAuthenticationGoogleGames.Instance.GetCurrentUser((MRGSAuthenticationUser user, MRGSError error) => {
string resultDescription = "getCurrentUser:\User: " + user + "\nError:\n" + error;
MRGSLog.getInstance().addLog("MRGSAuthentication<Unity> - AppleGameCenter " + resultDescription);
if (!error) {
// User data work
}
});
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import games.my.mrgs.MRGSError;
import games.my.mrgs.authentication.MRGSAccessToken;
import games.my.mrgs.authentication.MRGSAuthentication;
import games.my.mrgs.authentication.MRGSUser;
import games.my.mrgs.authentication.google.play.MRGSGooglePlayGames;
import games.my.mrgs.utils.optional.BiConsumer;
// Returns user's information.
MRGSGooglePlayGames.getInstance().getCurrentUser(new MRGSAuthentication.UserCallback() {
@Override
public void onSuccess(@NonNull final MRGSUser user) {
}
@Override
public void onError(@NonNull MRGSError error) {
}
});
// Returns authentication's information.
MRGSGooglePlayGames.getInstance().getAccessToken(new BiConsumer<MRGSAccessToken, MRGSError>() {
@Override
public void accept(@Nullable MRGSAccessToken accessToken, @Nullable MRGSError error) {
if (error != null) {
Log.d("MRGSAuthentication", "AccessToken error: " + error.getErrorText());
} else {
Log.d("MRGSAuthentication", "AccessToken success: " + accessToken);
}
}
});
Для того, чтобы "выйти" из аккаунта пользователя, воспользуйтесь методом:
Важно
Данная функция лишь только удаляет кэш, поскольку Google Play Games Services V2 не поддерживает функцию "выхода", то есть фактически пользователь остается залогинен. Единственная возможность выйти - это зайти в приложение Play Games, выбрать нужное приложение и отозвать доступ.
Дополнительные возможности Google Play Games🔗
Также, MRGSAuthenticationGoogleGames (MRGSGooglePlayGames на Android) предлагает вам несколько дополнительных возможностей
Для того, чтобы получить аватарку пользователя с заданным идентификатором, воспользуйтесь методом:
import android.graphics.Bitmap;
import androidx.annotation.NonNull;
import games.my.mrgs.MRGSError;
import games.my.mrgs.authentication.MRGSAvatarCallback;
import games.my.mrgs.authentication.MRGSUser;
import games.my.mrgs.authentication.google.play.MRGSGooglePlayGames;
// Call #getCurrentUser() to get current user.
final MRGSUser user = ...
// Get user's avatar.
MRGSGooglePlayGames.getInstance().getUserAvatar(user, new MRGSAvatarCallback() {
@Override
public void onSuccess(@NonNull Bitmap bitmap) {
// Handle result.
}
@Override
public void onError(@NonNull MRGSError error) {
// Handle error.
}
});
Работа с достижениями🔗
Работа с достижениями описана в разделе Основные интерфейсы - Работа с достижениями игрока - (Achievements).
Дата создания: 2020-05-28