외부 라이브러리 가져오기
1. SDK Manager에서 Google Play Service를 설치한다.
2. 이클립스에서 {sdk}/extras/google/google_play_services/libproject/google-play-services_lib 를 import 한다.
3. 내가 만든 프로젝트 – properties – Android – Library – Add… – google-play-services_lib 선택 – ok
4.
– https://github.com/playgameservices/android-samples – Download Zip – 압축 풀고 libraries/BaseGameUtils/src/com/google/example/games/basegameutils 의 BaseGameActivity.java와 GameHelper.java를 내가 만든 프로젝트로 가져온다. (가져오고 나서 package path 수정하기)
– libraries/BaseGameUtils/res/values/gamehelper_strings.xml 을 내 프로젝트/res/strings 폴더로 복사한다.
Google Developer Console
5. https://play.google.com/apps/publish – 게임 서비스 – 새 게임 추가
6. 앱 연결하기
패키지 이름에는 내가 만든 앱의 패키지 경로를 넣어준다.
지금 앱 승인을 누른다.
이런 창이 뜨는데, Continue를 누른다.
이클립스에서 Manifest – Use the Export Wizard를 이용해서 SHA1 값을 복사해온다.
복사한 SHA1값을 붙여넣는다.
정상적으로 승인이 됐으면 아무 오류 없이 이 화면이 뜬다.
오류가 있다면 api console에서 같은 패키지 경로를 사용하는 앱이 이미 있어서 일 가능성이 높다.
이렇게 정상적으로 목록에 나타난다.
여러 앱에서 하나의 게임서비스를 연결해도 괜찮다.
Google api console에도 이렇게 자동적으로 앱이 등록된다.
7. 업적 생성
한 번만 달성하면 되는 업적(설명이 너무 길면 잘리더라)
여러 번 달성해야 하는 업적(같은 업적을 여러 번 달성해야 할 때)
잘 만들어졌다.
8. 리더보드 생성
최고 점수 공유용
가장 빨리 끝낸 시간 공유용(코드에서 업로드할 때 단위는 millisecond로 해야한다)
코드 수정
9. 업적이나 리더보드 목록 아래의 ‘리소스 받기’를 클릭하면 ID들이 나오는데, strings.xml에 추가한다.
<string name="app_id">18868752446</string> <string name="achievement_1">CggIvqCppUYQAhAB</string> <string name="achievement_2">CggIvqCppUYQAhAC</string> <string name="leaderboard_point">CggIvqCppUYQAhAD</string> <string name="leaderboard_time">CggIvqCppUYQAhAE</string>
10. Manifest의 application 안에 아래의 코드를 추가한다.
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
11. play service 를 사용할 activity를 BaseGameActivity를 상속하게 한다. (onSignInFailed(), onSignInSucceeded()가 추가된다)
12. 화면에 Sing In Button을 추가한다.
<com.google.android.gms.common.SignInButton android:layout_width="wrap_content" android:layout_height="wrap_content" />
13. 지원하는 함수들
// google login beginUserInitiatedSignIn(); // 리더보드 getGamesClient().submitScore(리더보드ID, 점수); // 업적 달성 getGamesClient().unlockAchievement(업적ID); // 여러 번 달성해야 하는 업적 getGamesClient().incrementAchievement(업적ID, 달성횟수); // 리더보드 확인 startActivityForResult(getGamesClient().getLeaderboardIntent(getString(R.string.leaderboard_point)), requestCode); // 전체 리더보드 확인 startActivityForResult(getGamesClient().getAllLeaderboardsIntent(), requestCode); // 업적 확인 startActivityForResult(getGamesClient().getAchievementsIntent(), requestCode);
주의사항
14. 로그인 테스트를 하기위해서는 apk로 만들어야 하며, 앱을 마켓에 개시하지 않았다면 Developer Console에서 테스트 계정을 추가해야 한다.
apk로 만들지 않았거나, 테스트 계정을 추가하지 않으면 이런 에러가 뜬다.
Developer Console에서 테스트 계정을 추가한다.
15. 애플리케이션을 게시로 바꾼 후, 게임서비스에서도 게시로 바꿔줘야한다. 안그러면 실 사용자들이 로그인이 되지 않는다.
작동 확인