cocos2d-x Android GREE SDK 연동 네번째. GREE Platform Login/Logout

지난 시간에 GREE SDK 초기화 관련 처리를 했습니다. 이번에는 Casual Game API( Leaderboards, Achievements )전 단계인 GREE Platform에 Login/Logout 처리를 정리해보겠습니다.

먼저 Login 처리입니다.

import net.gree.asdk.api.auth.Authorizer;
import net.gree.asdk.api.auth.Authorizer.AuthorizeListener;
import net.gree.asdk.api.auth.Authorizer.UpdatedLocalUserListener;

cocos2d-x Helloworld의 ApplicationDemo.java에 위와 같이 3가지를 import해줍니다. onCreate를 아래와 같이 수정 합니다.

public class ApplicationDemo extends Cocos2dxActivity{
 private Cocos2dxGLSurfaceView mGLView;
 
 protected void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  
  if (detectOpenGLES20()) {
//...
//...

// Set framelayout as the content view
   setContentView(framelayout);
//이미 인증 받았는가?

if (!Authorizer.isAuthorized()) {
      //인증 요청
      Authorizer.authorize(ApplicationDemo.this,
        //login 완료 후 callback 처리 Listener
        new AuthorizeListener() {
          public void onAuthorized() {
            // write process after login completion
            Log.d("GREE", "authorization is ok");
          }
          public void onCancel() {
            Log.d("GREE", "authorization is cancelled");
          }
          public void onError() {
            Log.d("GREE", "authorization is error");
          }
        },
        //로컬 유저 정보 Update에 대한 callback 처리 Listener
      new UpdatedLocalUserListener(){
       public void onUpdateLocalUser() {
              Log.d("GREE", "UpdateLocalUser");
       }
    });
}

App이 실행시마다 GREE에 Login 처리가 되어야 합니다. 이때 Authorizer.isAuthorized()로 인증이 되었는지 체크 후 실패 시 Authorizer.authorize()로 Login 화면이 나오도록 처리합니다.

Login이 완료 된 후에 callback 처리는 AuthorizeListener에서 담당합니다. 각각 인증에 성공, 취소, 오류가 발생한 경우로 callback이 발생합니다. 간단히 Log.d로 로그 출력을 하고 있지만 실제 Store에 릴리즈 되는 App에는 Toast같은 것으로 사용자에게 알려줘야겠죠.

로컬 유저 정보가 Update될 시 callback 처리는 UpdatedLocalUserListener에서 처리합니다.


이제 Logout처리를 해보겠습니다.

import net.gree.asdk.api.auth.Authorizer.LogoutListener;

ApplicationDemo.java에 LogoutListener import를 추가합니다. 그리고 위 Login 소스 바로 밑에 아래 소스를 추가합니다.
// 인증 된 상태라면
if( Authorizer.isAuthorized()){
                                //logout 시도
    Authorizer.logout(ApplicationDemo.this,
                              //logout후 callback Listener
         new LogoutListener() {
            public void onLogout() {
             // write process after logout completion
             Log.d("GREE", "Logout Ok");
            }
            public void onCancel() {
             Log.d("GREE", "Logout Cancel");
            }
            public void onError() {
             Log.d("GREE", "Logout Error");
            }
         },
         new AuthorizeListener() {
            public void onAuthorized() {
             // write process after login again
             Log.d("GREE", "authorization is ok 2");
            }
            public void onCancel() {
             Log.d("GREE", "authorization is cancelled 2");
            }
            public void onError() {
             Log.d("GREE", "authorization is error 2");
            }
         },
         new UpdatedLocalUserListener() {
               public void onUpdateLocalUser() {
                Log.d("GREE", "UpdateLocalUser 2");
               }
         });
   }

따로 버튼 만들기 귀찮아서 이렇게 처리했습니다 ㅎㅎ; 인증 된 상태라면 Logout 시도를 합니다. 이제 빌드 후 실행을 해보면,

바로 GREE 화면이 이렇게 나올 것입니다.

지금 가입을 누르면 Login 화면이 나오는데 GREE 개발자 센터에서 가입했던 개발자 테스트 계정으로 Login하시면 됩니다.

cocos2d-x에 GREE를 붙인 스샷입니다. Welcome WWForever!

LogCat에 찍힌 Log입니다. 인증 성공했습니다.

이제 Close버튼을 눌러 종료 후 Background로 돌고있는 Helloworld 샘플을 다시 실행하면 이렇게 Logout창이 뜹니다. 로그아웃을 클릭하면 Logout이 되겠죠?

역시나 LogCat에 찍힌 Log입니다. 잘 되네요.

그런데 Logout후 바로 또 Login 시도를 하나봅니다. 개발자 가이드에도 그리 나와있던데 스샷을 자세히 보면 아시겠지만 처음 cocos2d-x 기반위에서 뜬 Login이랑은 다릅니다. 이거 뭐 창 닫는 버튼도 없고, 자동으로 안하게 할 수 있는걸 알아봐야겠네요.

이것으로 GREE Platform에 Login/Logout을 마무리 합니다. 위에 언급한 자동 Login 부분은 찾게되면 포스팅을 수정하도록 하고, 다음에는 Casual Game API( Leaderboards, Achievements )를 적용해보도록 하겠습니다.

댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.