2017-10-13 6 views
1

J'ai récemment mis en place un classement google play services dans mon application, mais j'ai découvert qu'il ne soumettait pas de scores.Google play leaderboard - impossible de soumettre des scores

J'ai une instance de GoogleApiClient de MainActivity qui est déclarée statique à utiliser dans d'autres activités. Le code pour visiter le leaderboard est dans MainActivity.

public static GoogleApiClient apiClient = apiClient = new GoogleApiClient.Builder(this) 
       .addApi(Games.API) 
       .addScope(Games.SCOPE_GAMES) 
       .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() { 
        @Override 
        public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
         Toast.makeText(MainActivity.this, "Failed to connect to google play", Toast.LENGTH_LONG).show(); 
        } 
       }) 
       .build(); 

Le code de soumettre le score est dans une méthode qui est appelée à partir onActivityResult d'une deuxième activité (et une fois dans onCreate pour les tests). Parce qu'il est dans le résultat onActivity, le GoogleApiClient est pas instantanément connecté et les résultats en échec si je mets à jour directement, donc je l'ai fait quelque chose comme ceci:

MainActivity.apiClient.registerConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 
      @Override 
      public void onConnected(@Nullable Bundle bundle) { 
       PendingResult r = Games.Leaderboards.submitScoreImmediate(MainActivity.apiClient, 
         getString(R.string.leaderboard_most_stars), 
         totalStars); 
       ResultCallback callback = new ResultCallback() 
       { 
        @Override 
        public void onResult(@NonNull Result result) {} 
       }; 
       r.setResultCallback(callback); 
      } 

      @Override 
      public void onConnectionSuspended(int i) { 

      } 
     }); 

Mais il ne présente note pour une raison quelconque. Charges de classement, ne montre aucun score.

Et chose étrange, cela fonctionne très bien sur un émulateur sur un compte de test.

Quelqu'un peut-il aider à signaler l'erreur?

+0

Avez-vous essayé de vérifier le résultat et de voir s'il y avait la moindre idée? – Cata

+0

Cela fonctionne sur l'émulateur, j'ai vérifié avec Log et toasts, et c'est comme prévu. Juste ne fonctionne pas sur de vrais appareils pour une raison quelconque – Abhijeet

Répondre

0

Si vous ne l'avez pas fait, vérifiez et assurez-vous que vous avez fourni correctement le SHA-1 de votre certificat de signature. Notez que l'empreinte du certificat de version est différente de l'empreinte du certificat de débogage.

De Authenticating Your Client,

Pour obtenir l'empreinte digitale du certificat de sortie:

keytool -exportcert -list -v \ 
-alias <your-key-name> -keystore <path-to-production-keystore> 

Pour obtenir l'empreinte du certificat de débogage (pour Windows):

keytool -exportcert -list -v \ 
-alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore 

En plus de cela, je suggère que vous considérez aussi en regardant Quality Checklist for Google Play Games Services en particulier sur sign-in et leaderboards.

+0

Hmm, je n'ai jamais rien fait depuis le terminal jusqu'ici .. J'ai essayé mais il a dit keystore existe à l'emplacement mais est vide. En outre, je ne réponds pas actuellement à toutes les exigences de connexion de la liste de vérification (ne pas avoir de connexion manuelle.) est-ce une cause? – Abhijeet