我最近在我的应用中实施了Google Play服务排行榜,但发现它没有提交分数。
我有一个来自MainActivity的GoogleApiClient实例,该实例被声明为静态以用于其他活动。访问排行榜的代码在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();
提交分数的代码位于从第二个活动的onActivityResult调用的方法内(并且在onCreate中进行一次测试)。因为它在onActivity结果中,googleApiClient没有立即连接,如果我直接更新会导致失败,所以我做了类似这样的事情:
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) {
}
});
但由于某种原因,它无法提交分数。排行榜加载,只显示没有得分。
奇怪的是,它在测试帐户上的模拟器上运行良好。
任何人都可以帮忙指出错误吗?
答案 0 :(得分:0)
如果您还没有这样做,请检查并确保您已正确提供签名证书的SHA-1。请注意,发布证书指纹与调试证书指纹不同。
获取发布证书指纹:
keytool -exportcert -list -v \
-alias <your-key-name> -keystore <path-to-production-keystore>
获取调试证书指纹(适用于Windows):
keytool -exportcert -list -v \
-alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
除此之外,我建议您考虑Quality Checklist for Google Play Games Services,特别是sign-in和leaderboards。