1장에 이어서, 2장에서는 play console의 리더보드를 이용해서, 랭킹 시스템을 구현하도록 하겠습니다!.
1. google play console 텝에서 애플리케이션 등록
리더보드를 사용하기 위해서는 google play console에 어플레케이션을 등록해야합니다.
2. 리더보드 생성
play console 창에서 리더보드를 생성해줍니다.
3. 코드 구현부
가장 먼저 googleSignIn 기능입니다
private fun googleSignIn() {
val signInIntent = GoogleSignIn.getClient(
this,
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build()
).signInIntent
startActivityForResult(signInIntent, RC_SIGN_IN)
}
구글 로그인을 통해 로그인을 진행합니다.
startActivityForResult를 통해
로그인이 완료가 되면, activity의 결과로 leaderboardsclient에 값을 저장해줍니다.
@SuppressLint("VisibleForTests")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == RC_SIGN_IN) {
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
try {
val account = task.getResult(ApiException::class.java)
// 리더보드 사용을 위해 Google Play Games 서비스에 로그인
leaderboardsClient = Games.getLeaderboardsClient(this, account!!)
// 리더보드 표시
} catch (e: ApiException) {
}
}
}
점수 업데이트 기능은 다음과 같습니다.
leaderboards가 initialize가 되었는지 체크하여 되어있다면, 점수를 업데이트를 진행합니다.
리더보드 ID의 경우에는 플레이 콘솔에서 리더보드 클릭후 만든 리더보드의 ID값을 사용하면 됩니다.
private fun submitScoreToLeaderboard(score: Long) {
if(::leaderboardsClient.isInitialized)
{
leaderboardsClient.submitScoreImmediate("YOUR_LEADERBOARD_ID",score).addOnCompleteListener {
Toast.makeText(applicationContext, "성공", Toast.LENGTH_SHORT).show()
}
.addOnFailureListener {
Toast.makeText(applicationContext, "실패", Toast.LENGTH_SHORT).show()
}
}
else {
googleSignIn()
}
}
리더보드를 화면에 띄우는 기능은 다음과 같습니다.
private fun showLeaderboard() {
if(::leaderboardsClient.isInitialized)
{
leaderboardsClient.getLeaderboardIntent("YOUR_LEADERBOARD_ID")
.addOnSuccessListener { intent ->
startActivityForResult(intent, RC_LEADERBOARD)
}
.addOnFailureListener { e ->
}
}
else {
googleSignIn()
}
}
이상 포스팅 마치겠습니다. 대부분이 Unity에 리더보드를 등록하는 방법만 공유되어 혹시라도 Android Kotlin 환경에서 리더보드를 사용하고자 하는 분들을 위해 글을 남깁니다.
'안드로이드 > 반응속도 테스트 앱 만들기' 카테고리의 다른 글
[Android - 반응속도 앱] 1. 반응속도 테스트 앱 만들기 (0) | 2023.05.30 |
---|