Google Play Games Services V1🔗

Google Play Games Services V1 - набор сервисов, который позволяет вашим пользователям авторизоваться, отслеживать свои лучшие результаты в таблице лидеров, сравнивать их достижения, приглашать друзей сыграть в игру. Приложения могут включать любые или все из следующих функций, поддерживаемых Google Play Games:
- Рейтинги — сравнивает оценки с друзьями игрока и с другими игроками со всего мира
- Достижения — очки присуждаются игрокам в составе системы отслеживания достижений Google Play Games. Игроки могут зарабатывать очки, выполняя определённые внутриигровые задачи. Игроки не могут использовать раздел для чего-либо иного, кроме как оценить прогресс в играх. Он был разработан так, чтобы игроки могли общаться и конкурировать друг с другом.
Предварительная настройка🔗
Настройка Google Play Games состоит из двух этапов:
- Подключить Google Play Games к проекту
- Подключить Google Sign-in для авторизации в Google Play Games
Подключение Google Play Games в консоли Google Play🔗
- Откройте Консоль разработчика Google Play
- В списке слева выберите пункт "Игровые сервисы" (Game Services)

- Нажмите кнопку "Добавить новую игру" (Add New Game)

- Следуйте указаниям окна настройки, после чего нажмите кнопку "Сохранить"
- В меню слева выберите пункт "Связанные приложения" (Linked apps)
- Нажмите кнопку "Android"

- В разделе "Название пакета" (Package name) введите package name вашего приложения, после чего выберите его
- Нажмите кнопку "Сохранить и продолжить" (Save), после чего убедить в верности чексуммы сертификата вашего приложения
- Нажмите кнопку "Авторизовать" для завершения связывания вашего игрового проекта с вашей игрой

- Убедитесь, что packagename и sha1 чексумма сертификаты корректны
- Откройте раздел "Сведения об игре". Скопируйте ID вашего приложения(отображается под названием вашей игры, как указано на изображении), он понадобиться на следующем шаге

Теперь вам необходимо отредактировать файл AndroidManifest.xml
В разделе <application> необходимо добавить мета-информацию, и указать ID вашего приложения, полученного на предыдущем шаге. ВНИМАНИЕ! Для того, чтобы ID воспринялся системой как строка, а не как целое число, перед ID необходимо указать служебный unicode-символ \u003. Пример для ID 987654321012
<application
...>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="\u003987654321012"/>
Подключите службу Google Sign-In🔗
- Откройте сайт Google Sign-In for Android
- Перейдите сразу к пункту "2" Configure a Google API project и нажмите кнопку "Configure a Project"

- Выберите в выпадающем списке ваш проект. Если вы его там не находите, значит что-то не так. Убедитесь, что вы залогинены в Google под той же учетной записью, под которой заходите в консоль Google Play

- Заполните поля package name и sha-1 чексуммы сертификата, которым вы подписываете release сборку приложения
- После появления сообщения об успешном завершении операции, нажмите на ссылку "API Console" и перейдите в консоль Google Developers

- В открывшемся окне вы увидите список OAuth клиентов. Один (Android) был сгенерирован, когда вы слинковали созданную игру Google Games с вашим проектом в консоли Google Play. Второй (Web) был сгенерирован на предыдущем шаге, во время настройки Google Sign-In. Этот ID клиента необходимо скопировать для дальнейшей настройки

Добавление зависимостей🔗
Далее необходимо добавить в проект 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, выберите пакетMRGSAuthenticationGoogleSignInиз списка, затем нажмите "Install" - Импортируйте модуль:
using MRGS;
- Загрузите последнюю версию библиотеки. Распакуйте архив.
- (Для интеграции unitypackage) В Unity нажмите
Assets -> Import Package -> Custom Package, и выберите пакетgames.my.mrgs.authenticationgooglesignin.unitypackageиз скачанного архива. - (Для интеграции tgz) В Unity нажмите
Window -> Package Manager -> '+' -> Add package from tarball, и выберите пакетgames.my.mrgs.authenticationgooglesignin-<version>.tgzиз скачанного архива. - Импортируйте модуль:
using MRGS;
Android:
Добавление в проект
Добавьте зависимость в build.gradle файл:
Скопируйте файлы MRGSAuthentication.aar и MRGSAuthenticationGoogleSignIn.aar в директорию libs вашего проекта. Добавьте необходимые зависимости в файл build.gradle
dependencies {
//...
implementation(name: 'MRGSAuthentication', ext:'aar')
implementation(name: 'MRGSAuthenticationGoogleSignIn', ext:'aar')
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.browser:browser:1.5.0'
implementation "com.google.android.gms:play-services-auth:20.6.0"
implementation "com.google.android.gms:play-services-games:23.1.0"
}
Теперь вам необходимо указать полученный Web Client Id при инициализации MRGS
using MRGS;
public class MasterController : MonoBehaviour
{
void Awake()
{
// Setting up mrgs params
// ...
var modulesParams = new List<MRGSExternalSDKSettings>;
modulesParams.Add(new MRGSGoogleSignInParams(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.signin.MRGSGoogleSignIn;
public class YourApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
final MRGServiceParams serviceParams = ...;
final List<MRGSModuleParams> moduleParams = ...;
// Setting External SDKs
final MRGSGoogleSignInParams googleSignInParams = MRGSGoogleSignInParams.init("GOOGLE_CLIENT_ID");
moduleParams.add(googleSignInParams);
MRGService.service(context, serviceParams, moduleParams);
}
}
Работа с MRGSAuthentication интерфейсом🔗
Для работы с Google Play Games воспользуйтесь классом MRGSAuthenticationGoogleSignIn. Обращаем внимание, что данный класс реализует основной интерфейс 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.signin.MRGSGoogleSignIn;
MRGSGoogleSignIn.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.
MRGSAuthenticationGoogleSignIn.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.
MRGSAuthenticationGoogleSignIn.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.signin.MRGSGoogleSignIn;
import games.my.mrgs.utils.optional.BiConsumer;
// Returns user's information.
MRGSGoogleSignIn.getInstance().getCurrentUser(new MRGSAuthentication.UserCallback() {
@Override
public void onSuccess(@NonNull final MRGSUser user) {
}
@Override
public void onError(@NonNull MRGSError error) {
}
});
// Returns authentication's information.
MRGSGoogleSignIn.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🔗
Также, MRGSAuthenticationGoogleSignIn (MRGSGoogleSignIn на 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.signin.MRGSGoogleSignIn;
// Call #getCurrentUser() to get current user.
final MRGSUser user = ...
// Get user's avatar.
MRGSGoogleSignIn.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