У меня есть приложение Android, и я хочу подключиться к сервису Google Play Games.
Мой код:
class WelcomeActivity : AppCompatActivity() {
private var btnPlay: Button? = null
private var btnRanking: Button? = null
private var btnHowToPlay: Button? = null
private var googleSignInClient: GoogleSignInClient? = null
private var achievementsClient: AchievementsClient? = null
private var leaderboardsClient: LeaderboardsClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_welcome)
btnPlay = findViewById(R.id.btnPlay)
btnRanking = findViewById(R.id.btnRanking)
btnHowToPlay = findViewById(R.id.btnHowToPlay)
btnPlay?.setOnClickListener{
startActivity(Intent(this, MainActivity::class.java))
}
btnRanking?.setOnClickListener{
showTopPlayers(it)
}
btnHowToPlay?.setOnClickListener{
startActivity(Intent(this, HowToPlayActivity::class.java))
}
initGoogleClientAndSignin()
}
fun initGoogleClientAndSignin() {
googleSignInClient = GoogleSignIn.getClient(this, GoogleSignInOptions.Builder(
GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build())
googleSignInClient?.silentSignIn()?.addOnCompleteListener { task ->
if (task.isSuccessful) {
achievementsClient = Games.getAchievementsClient(this, task.result!!)
leaderboardsClient = Games.getLeaderboardsClient(this, task.result!!)
} else {
Log.e("Error", "signInError", task.exception)
}
}
}
fun showTopPlayers(view: View) {
leaderboardsClient?.allLeaderboardsIntent?.addOnSuccessListener {intent ->
startActivityForResult(intent, 0)
}
}
}
И у меня следующая ошибка при инициализации приложения :
E/Error: signInError
com.google.android.gms.common.api.ApiException: 8: 8:
at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(com.google.android.gms:play-services-base@@17.1.0:4)
at com.google.android.gms.common.internal.zai.zaf(com.google.android.gms:play-services-base@@17.1.0:2)
at com.google.android.gms.common.internal.zak.onComplete(com.google.android.gms:play-services-base@@17.1.0:6)
at com.google.android.gms.common.api.internal.BasePendingResult.zaa(com.google.android.gms:play-services-base@@17.1.0:176)
at com.google.android.gms.common.api.internal.BasePendingResult.setResult(com.google.android.gms:play-services-base@@17.1.0:135)
at com.google.android.gms.auth.api.signin.internal.zzi.zzc(com.google.android.gms:play-services-auth@@18.0.0:5)
at com.google.android.gms.auth.api.signin.internal.zzs.dispatchTransaction(com.google.android.gms:play-services-auth@@18.0.0:6)
at com.google.android.gms.internal.auth-api.zzc.onTransact(com.google.android.gms:play-services-auth@@18.0.0:13)
at android.os.Binder.execTransact(Binder.java:674)
Мой идентификатор приложения находится в AndroidManifest. xml и версия сервисов Google Play.
<application>
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
SHA-1 хорош, потому что Google синхронизирует c автоматически, когда Я подключаю игру к приложению в консоли разработчика Play, я не знаю, как это решить.