Вход в игры для Android

Чтобы получить доступ к функциям игровых сервисов Google Play, ваша игра должна предоставить учетную запись вошедшего в систему игрока. В этой документации описывается, как реализовать беспрепятственный вход в вашу игру.

SDK Play Games Services v2 содержит ряд улучшений, которые увеличивают количество пользователей, вошедших в вашу игру, и упрощают разработку:

  • Улучшения для пользователей:
    • После выбора учетной записи по умолчанию пользователи входят в систему без необходимости взаимодействия с подсказкой.
    • Пользователям больше не нужно загружать приложение Play Games, чтобы войти в игровые сервисы Play или создать новую учетную запись.
    • Теперь пользователи могут управлять своими учетными записями игровых сервисов Play для нескольких игр с одной страницы.
  • Улучшения для разработчиков:
    • Клиентскому коду больше не нужно обрабатывать процесс входа или выхода, поскольку вход в систему запускается автоматически при запуске игры, а управление учетной записью осуществляется в настройках ОС.

Интеграция нового клиента с Play Games Services Sign In v2

В этом разделе показано, как выполнить интеграцию нового клиента с Play Games Services Sign In v2.

Добавьте зависимость SDK Play Games Services

Добавьте зависимость Play Game Services SDK в файл build.gradle корневого уровня вашего приложения. Если вы используете Gradle, вы можете добавить или обновить зависимости следующим образом:

dependencies {
 implementation
"com.google.android.gms:play-services-games-v2:+"
}

Определите идентификатор проекта игровых сервисов Play.

Чтобы добавить идентификатор проекта Play Games Services SDK в свое приложение, выполните следующие действия:

  1. В файле AndroidManifest.xml вашего приложения добавьте следующий элемент <meta-data> и атрибуты к элементу <application> :

    <manifest>
     
    <application>
       
    <meta-data android:name="com.google.android.gms.games.APP_ID"
                   
    android:value="@string/game_services_project_id"/>
     
    </application>
    </manifest>

    Определите ссылку на ресурс String @string/game_services_project_id используя в качестве значения идентификатор проекта игровых сервисов вашей игры. Идентификатор вашего проекта игровых сервисов можно найти под названием вашей игры на странице конфигурации в консоли Google Play.

  2. В файле res/values/strings.xml добавьте ссылку на строковый ресурс и установите идентификатор вашего проекта в качестве значения. В консоли Google Play вы можете найти идентификатор своего проекта под названием игры на странице конфигурации . Например:

    <!-- res/values/strings.xml -->
    <resources>
     
    <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
     
    <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>

Инициализируйте SDK

Инициализируйте Play Games SDK в обратном вызове onCreate(..) вашего класса Application .

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate() {
 
super.onCreate();
 
PlayGamesSdk.initialize(this);
}

Получить результат входа

Когда ваша игра запускается, она всегда пытается войти в систему пользователя. Чтобы аутентифицировать пользователя, вы должны убедиться, что пользователь успешно вошел в систему, а затем получить его идентификатор игрока.

Чтобы проверить попытку входа, вызовите GamesSignInClient.isAuthenticated() и используйте addOnCompleteListener для получения результатов. Например:

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient
.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
 
boolean isAuthenticated =
   
(isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask
.getResult().isAuthenticated());

 
if (isAuthenticated) {
   
// Continue with Play Games Services
 
} else {
   
// Disable your integration with Play Games Services or show a
   
// login button to ask  players to sign-in. Clicking it should
   
// call GamesSignInClient.signIn().
 
}
});

Если пользователь решает не входить в систему при запуске игры, вы можете при желании продолжить отображение кнопки со значком Play Games и попытаться снова войти в систему, вызвав GamesSignInClient.signIn() , если пользователь нажимает кнопку.

Убедившись, что пользователь вошел в систему, вы можете получить идентификатор игрока, чтобы идентифицировать пользователя. Например:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
   
// Get PlayerID with mTask.getResult().getPlayerId()
 
}
);