Para acessar a funcionalidade dos Serviços do Google Play Games, seu jogo precisa fornecer a conta do jogador autenticado. Esta documentação descreve como implementar uma experiência de autenticação perfeita no seu jogo.
O SDK dos serviços do Google Play Games v2 traz uma série de melhorias que aumentam o número de usuários autenticados no jogo e facilitam o desenvolvimento:
- Melhorias para os usuários:
- Depois de selecionar uma conta padrão, os usuários são autenticados sem precisar interagir com uma solicitação.
- Os usuários não precisam mais fazer o download do app Play Games para autenticar com os serviços do Google Play Games nem criar uma nova conta.
- Agora os usuários podem gerenciar as contas dos serviços relacionados a jogos do Google Play para vários jogos em uma única página.
- Melhorias para desenvolvedores:
- O código do cliente não precisa mais processar o fluxo de autenticação ou saída, já que o login é acionado automaticamente quando o jogo é iniciado, e o gerenciamento da conta é processado nas configurações do SO.
Integração de novos clientes
Esta seção mostra como fazer uma integração de novos clientes com o login dos serviços relacionados a jogos do Google Play v2.
Adicionar a dependência
Adicione a dependência do SDK dos serviços relacionados a jogos do Google Play ao arquivo
build.gradle no nível raiz do app. Se você estiver usando o Gradle, vai poder adicionar ou atualizar a
dependência da seguinte maneira:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Definir o ID do projeto
Para adicionar o ID do projeto do SDK dos serviços relacionados a jogos do Google Play ao seu app, siga estas etapas:
No arquivo
AndroidManifest.xmldo seu app, adicione o seguinte elemento<meta-data>e atributos ao elemento<application>:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Defina a referência
@string/game_services_project_iddo recurso de string usando o ID do projeto do jogo nos serviços relacionados a jogos como o valor. O ID do projeto nos serviços relacionados a jogos pode ser encontrado abaixo do nome do jogo na página Configuração do Google Play Console.No seu arquivo
res/values/strings.xml, adicione uma referência de recurso de string e defina o ID do projeto como o valor. No Google Play Console, você encontra o ID do projeto abaixo do nome do jogo na página Configuração. Exemplo:<!-- 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>
Inicializar o SDK
Inicialize o SDK do Play Games no callback onCreate(..) da classe
Application.
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Receber o resultado da autenticação
Quando o jogo é iniciado, ele sempre tenta autenticar o usuário. Para autenticar o usuário, você precisa verificar se ele fez login e, em seguida, receber o ID do jogador.
Para verificar a tentativa de autenticação, chame GamesSignInClient.isAuthenticated()
e use addOnCompleteListener para recuperar os resultados. Exemplo:
GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
boolean isAuthenticated =
(isAuthenticatedTask.isSuccessful() &&
isAuthenticatedTask.getResult().isAuthenticated());
if (isAuthenticated) {
// Continue with Play Games Services
} else {
// Show a sign-in button to ask players to authenticate. Clicking it should
// call GamesSignInClient.signIn().
}
});
Impedir a criação automática de perfis
É possível desativar os avisos de criação de perfil acionados automaticamente pelo arquivo de manifesto. Isso permite que usuários sem um perfil dos serviços do Google Play Games continuem carregando o jogo sem precisar criar um perfil dos serviços do Google Play Games. Para mais informações, consulte Opções de criação de perfil.
Para usar esse recurso, verifique se as seguintes condições foram atendidas:
- Não há um perfil dos serviços do Google Play Games em nenhuma das Contas do Google conectadas no dispositivo.
- Seu jogo está integrado ao SDK dos serviços do Google Play Games
com.google.android.gms:play-services-games-v2:21.0.0ou mais recente.
Para evitar os prompts de criação de perfil acionados automaticamente, siga estas etapas:
No arquivo
AndroidManifest.xml, adicione a tagcom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONno elemento<meta-data>e atributos ao elemento<application>:<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>Definir essa flag como "true" informa aos serviços do Google Play Games que seu jogo vai processar a criação de perfil. Consequentemente, os serviços do Google Play Games não vão mostrar automaticamente a interface de criação de perfil para usuários no dispositivo que não têm um perfil dos serviços do Google Play Games.
Quando você chama qualquer API dos serviços do Google Play Games, o código de status
GamesClientStatusCodes.SIGN_IN_REQUIREDindica que a chamada falhou porque o usuário não pôde ser autenticado automaticamente devido à ausência de um perfil dos serviços do Google Play Games.Isso permite que usuários sem um perfil dos serviços do Google Play Games continuem com os métodos de autenticação implementados sem receber imediatamente uma solicitação para criar um perfil dos serviços do Google Play Games. Para iniciar a criação de perfil, chame
GamesSignInService.signin().import com.google.android.gms.games.PlayGames; ... // Get the achievements client using Play Games services. AchievementsClient achievementsClient = PlayGames.getAchievementsClient(getActivity()); achievementsClient.getAchievementsIntent() .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { int statusCode = ((ApiException) exception).getStatusCode(); if (statusCode == GamesClientStatusCodes.SIGN_IN_REQUIRED) { // SIGN_IN_REQUIRED: The user needs to sign in with Play Games Services. // Call GamesSignInService.signin() to prompt for // authentication at a suitable time which will trigger the // profile creation UI. // (e.g., after a tutorial). Use GamesSignInService.isAuthenticated() to check auth status. } } });
Depois de adicionar a tag de supressão, use a janela
logcatpara verificar a adição. A saída delogcatcontém uma mensagem semelhante a esta: "O jogo recusou o aviso de criação automática de perfil (usando o manifesto)".