Este documento ajuda você a configurar seu projeto em C++ para C ou C++ nativo v2 e verificar o serviço de autenticação.
Antes de começar
É necessário configurar os serviços relacionados a jogos do Google Play no Google Play Console.
Pré-requisitos do app
O arquivo de compilação do seu app precisa usar os seguintes valores:
- Uma
minSdkVersion19ou versões mais recentes. - A
compileSdkVersionprecisa ser definida como28ou versões mais recentes.
Configurar o projeto do jogo
Conclua as etapas abaixo para configurar o projeto do jogo.
Atualizar o build.gradle
No arquivo build.gradle no nível do app, faça o seguinte:
Verifique se o recurso de build prefab está ativado.
Adicione a dependência do SDK nativo v2 (Beta):
com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1
Veja um exemplo:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1"
}
Atualizar o CMakeLists.txt
No seu arquivo CMakeLists.txt, adicione este código:
find_package(com.google.android.gms.games.v2.c REQUIRED CONFIG)
// link games_static for -DANDROID_STL=c++_static or default
// link games_shared for -DANDROID_STL=c++_shared
target_link_libraries(
app PUBLIC com.google.android.gms.games.v2.c::games_static)
Atualizar o AndroidManifest.xml.
Para definir o ID do projeto dos serviços relacionados a jogos do Google Play no arquivo
AndroidManifest.xml, adicione as seguintes linhas:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Crie um recurso de string para o ID do projeto. Isso permite que seu jogo acesse o ID durante a compilação. Para criar o recurso, crie o arquivo
project_root/app/src/main/res/values/games-ids.xmle adicione o seguinte:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>Crie e teste o jogo. Se tudo der certo, ao iniciar o jogo, ele vai mostrar uma solicitação de login ou um banner de login bem-sucedido.
Extrair o ID do jogador
Seu jogo pode acessar informações de um jogador autenticado
extraindo o ID do jogador. Você pode extrair o ID do jogador chamando a
função GetPlayerId, conforme demonstrado no exemplo a seguir.
#include <assert.h>
#include "gni/gni.h"
#include "gni/gni_task.h"
#include "pgs/pgs_play_games.h"
#include "pgs/pgs_players_client.h"
// A callback for a GniTask returned from PgsPlayersClient_getCurrentPlayerId.
void OnGetCurrentPlayerIdCompleteCallback(GniTask *task, void *user_data) {
if (!GniTask_isSuccessful(task)) {
const char *error_message = nullptr;
GniTask_getErrorMessage(task, &error_message);
// Log error message here.
GniString_destroy(error_message);
GniTask_destroy(task);
return;
}
const char *result = nullptr;
PgsPlayersClient_getCurrentPlayerId_getResult(task, &result);
// Log player ID here.
GniString_destroy(result);
GniTask_destroy(task);
}
// Gets the player ID.
void GetPlayerId(jobject main_activity) {
static const PgsPlayersClient *players_client =
PgsPlayGames_getPlayersClient(main_activity);
GniTask *get_current_player_id_task =
PgsPlayersClient_getCurrentPlayerId(players_client);
assert(get_current_player_id_task != nullptr);
GniTask_addOnCompleteCallback(get_current_player_id_task,
OnGetCurrentPlayerIdCompleteCallback,
nullptr);
}
// Entry point for our test app
void TestPGSNative(JNIEnv *env, jobject main_activity) {
JavaVM *java_vm;
env->GetJavaVM(&java_vm);
GniCore_init(java_vm, main_activity);
GetPlayerId(main_activity);
}
Reiniciar a solicitação de login
Se um jogador recusa a solicitação de login inicial dos serviços relacionados a jogos do Google Play que é mostrada
automaticamente quando o jogo é iniciado, ele pode mudar de ideia
durante a sessão. Para reiniciar a solicitação de login, chame
PgsGamesSignInClient_signIn, desde que nenhum jogador esteja autenticado.
Autorização do servidor de jogos
Depois que um jogador se autentica nos serviços relacionados a jogos do Google Play, o cliente do jogo
pode solicitar um código de autorização do servidor que o servidor de back-end do jogo
pode usar para se comunicar com segurança com os serviços relacionados a jogos do Google Play. Isso permite que o servidor de jogos
extraia, atualize e armazene dados para o jogador autenticado. É possível
extrair o código de autorização do servidor chamando a
função PgsGamesSignInClient_requestServerSideAccess.
Para mais informações, consulte o guia de acesso ao servidor.