OZ스토어에서 ARM 모듈 적용하기.

2012. 7. 31. 13:36프로그래밍/Android

728x90
반응형

Cocos2D-X를 이용해서 멀티 플랫폼으로 게임을 개발하고 있습니다.

현재는 iOS로 개발된 게임을 Android로 동시에 출시하고 있습니다.

기존의 개발 방법에서는 생각지도 못한 개발 기간 단축을 보이고 있습니다.

당연히 효율적인 프로젝트 관리와 더불어 시간적인 절약및 자원의 효율적인 활용도 높아졌습니다.


일단 iOS와는 다르게 안드로이드 환경에서는 각 마켓에 맞는 모듈들을 적용해주어야 서비스 검수에서 무사히 통과할 수 있습니다. 국내 LGT쪽의 오즈마켓에 등록을 위해서 ARM과 IAP를 적용해야 합니다. 

그나마 다행인것은 티스토어와 오즈스토어에 제공되는 ARM와 IAP모듈들이 같은 회사에서 개발하고 제공한듯 합니다. 모듈내 API의 이름이 비슷하고 사용방법도 동일합니다. 이 얼나마 다행인지 모르겠습니다.^^


1. 일단은 ARM을 적용하기 위해서 필요한 모듈들은 LGUARMPlugin.jar 파일입니다.

다운로드 받는 곳은 U+앱마켓 개발자 사이트(http://devpartner.lguplus.co.kr)에 가입하고 내려받으시면 됩니다.


2. eclipse project의 libs아래 복사해주세요.


3. Project properties에서 "Java Build Path"항목에서 "Libraries"에 위 LGUARMPlugin.jar 파일을 추가해줍니다.


그리고 소스 수정은 다음과 같이 하시면 됩니다.

import com.lgt.arm.LGUArmListener;

import com.lgt.arm.LGUArmManager;


public class SWATZombie extends Cocos2dxActivity implements LGUArmListener

{

private String mTestARMID = "AQ00119***"; // ARM용 고유 ID

private String mTestAppID = "Q02010254***"; // 게임 고유 ID로 ARM ID와는 별도로 사용됩니다.

LGUArmManager  arm = null; // for OZ

ProgressDialog pDlg = null;


protected void onCreate(Bundle savedInstanceState)

{

....

runArmService();

....

}

 

private void runArmService() 

      try 

      {     

     //통신 상태가 다르기 때문에 다음과 같이 메시지를 뛰어준다.

      pDlg = ProgressDialog.show(this, "인증", "Application 인증 중 "); 


      // ARM Plugin 연동 

      arm = null; 

      /** SKT용 별로도 다시 설명드리겠습니다.*/

      /*

      arm = new ArmManager( SWATZombie .this); 

      arm.setArmListener( SWATZombie .this); 

      arm.ARM_Plugin_ExecuteARM(AppID);

      */


      /** LGT용 */

     arm = new LGUArmManager(SWATZombie.this);

     arm.setArmListener(SWATZombie.this);

     arm.ARM_Plugin_ExecuteARM(mTestARMID);

      }

      catch (Exception e){ e.printStackTrace(); } 

     }

....

}



ARM 모듈을 호출한 후에 결과가 넘어오는데 그에 따라서 다음과 같이 처리를 해주시면 됩니다.   

     /**

      * LGT용

      */

     String Msg = "";

     public void onArmResult()

     {      

    switch(arm.netState)

    {

    case SERVICE_CONNECT:

        int res = arm.resCode; //ARMService 결과코드

        if(res == 1)

        {

    //License인증성공

    pDlg.hide();

      break;

         }

         else

         {

 // License 인증 실패

    Msg = arm.resMsg; //ARMService 에러메시지

     pDlg.hide();

  showDialog(0);

 break;

         }

    case SERVICE_FAIL:

    case SERVICE_NOT_EXIST:    

//ARMService와 통신 실패 및 해당 단말에 ARMService 미설치

//에러메시지 Popup 노출 후 Application 강제 종료

       pDlg.hide();

Msg = arm.resMsg;

showDialog(0);

doExit();

break;

    }

     }

     

위 ARM모듈에서 넘어온 결과에 따라서 실제로 정료를 하도록 한다.

     /* for LGT 

      * 인증 결과창을 뛰어준다.

      * */

     protected Dialog onCreateDialog(int id) 

     {

    return new AlertDialog.Builder(SWATZombie.this)

    .setIcon(R.drawable.icon)

    .setTitle("알림") //알림창의 제목

    .setMessage(Msg) // 알림창의 내용

    .setCancelable(false) // 팝업 창 노출 시 뒤로가기 버튼 사용금지 옵션

    //.setPositiveButton("R.string.alert_dialog_ok", new DialogInterface.OnClickListener() {

    .setPositiveButton("종료하기", new DialogInterface.OnClickListener() 

    {

    public void onClick(DialogInterface dialog, int whichButton) 

    {

    finish(); //어플리케이션 강제 종료 메소드

    }

    }).create();

   }


U+ 앱마켓 개발자 사이트 내용 참고로 프로젝트에 적용해 보았습니다.

기본적인 방법은 티스토어와 사용방법은 비슷합니다.

매일 고생하시는 개발자분들에게 조금이나마 도움이 되었으면 합니다.

감사합니다.



728x90
반응형