본문 바로가기
옛날

앱 버전 체크 스토어로 이동 [Android]

by 차가운게 조아 2015. 12. 14.

보통 앱이 업그레이드 됐어도, 대부분의 사람들이 자동으로 안되면 업데이트를 하지 않는다. 

 

자체서버를 사용하면 apk 파일로 체크를 하면 되지만, 개인개발자나 서버를 가지고 있지 않는 회사에서는 까다롭죠.(갑자기 존댓말..)

 

이번에 이걸 구현할 일이 생겨서 구현하다가 블로그에 처음으로 올린다.

 

http://androi.tistory.com/9

 

이 사이트를 참조 하였다.

 

 

1. 웹 페이지에 최신 버전을 표시

 

간단하게 무료로 사용하고 싶으면 구글앱엔진을 추천한다.

ex)  http://checkappver.appspot.com/CheckBBVersion.html 

 

<html>

<body>

version:

1.11

</body>

</html>

 

전 저기 있는 예제사이트를 사용했습니다. 구글앱엔진을 검색하시면 되겠습니다. ^^

 

웹페이지를 구현하실려면 http://www.labnol.org/internet/host-website-on-google-app-engine/18801/ 여기 보셔도 좋을듯 합니다~

어찌 됐건 구현 해야 할듯 ㅎ 

 

2. 웹페이지의 html 파일을 가져와서 버전 구하기

 

//전역 변수

DownThread mThread;

String sVersion;  // 웹페이지에서 가져온 버젼이 저장됨

 

//onCreate()

mThread = new DownThread("http://checkappver.appspot.com/CheckBBVersion.html");

mThread.start();

 

//class

class DownThread extends Thread {

  String mAddr;

  String mResult;

 

  DownThread(String addr) {

   mAddr = addr;

   mResult = "";

  }

 

  public void run() {

   StringBuilder html = new StringBuilder();

   

   try {

    URL url = new URL(mAddr);

    HttpURLConnection conn = (HttpURLConnection)url.openConnection();

    if (conn != null) {

     conn.setConnectTimeout(10000);

     conn.setUseCaches(false);

     if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {

      BufferedReader br = new BufferedReader(

        new InputStreamReader(conn.getInputStream()));

      Boolean bVersion = false;

      for (;;) {

       String line = br.readLine();

       if(bVersion){

        mResult = line;

        break;

       }

       if(line.equals("version:")){

        bVersion = true;

       } 

       

       if (line == null) 

        break;

      }

      br.close();

     }

     conn.disconnect();

    }

   } 

   catch (Exception ex) {;}

   mAfterDown.sendEmptyMessage(0);

  }

 }

 

Handler mAfterDown = new Handler() {

  public void handleMessage(Message msg) {

   sVersion = mThread.mResult;

   Toast.makeText(getBaseContext(), sVersion, Toast.LENGTH_SHORT).show();

   

 };

 

이렇게 sVersion에 웹페이지에 표시 되어 있는 버젼을 넣습니다. Handler에서 토스트 메세지로 띄워보면 잘 보입니다.

 

 

 

3. 현재 핸드폰에 설치 되어 있는 앱 버전 구하기.

 

 

 

여기서 보시면 android:versionName="1.11" 이 현재 앱의 버전입니다. 이건 개발자가 수정할수 있고, 스토어에서 보여지는 버전입니다.

위의 android:versionCode="1" 은 앱을 스토어에 업데이트 시킬때마다 변경시켜줘야 합니다.

1씩 올린다고 할때 업데이트를 10번 했으면 android:versionCode="10" 이 되겠죠? ㅎㅎ

 

아, 그리고 인터넷 권한 설정을 해줘야 합니다.

 

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

 

 

자, 이걸 이제 소스상에서 구해봅시다.

 

public static String getVersionName(Context context) {

        try {

            PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);

            return packageInfo.versionName;

        } catch (NameNotFoundException e) {

         

            return null;

        }

    }

 

onCreate() 에서 

Toast toast = Toast.makeText(getApplicationContext(), getVersionName(getBaseContext()) , Toast.LENGTH_SHORT);

toast.show();

 

이렇게 띄워보니 현재 앱의 버전이 잘 보입니다.

 

 

4. 버전 비교.

 

Handler mAfterDown = new Handler() {

  public void handleMessage(Message msg) {

   sVersion = mThread.mResult;

 

   if(sVersion.equals(getVersionName(getBaseContext()))) {

       Toast toast = Toast.makeText(getApplicationContext(), "최신 버전입니다.", Toast.LENGTH_SHORT);

          toast.show();

      } 

      else if(!sVersion.equals(getVersionName(getBaseContext()))) {

       Uri uri = Uri.parse("이동 하려는 url");

       Intent intent = new Intent(Intent.ACTION_VIEW, uri);

       startActivity(intent);

      }

  }

 };

 

이렇게 기존에 있던 Handler 안에서 토스트 메세지를 지우고, if문으로 비교하시면 됩니다.

 

저는 웹페이지의 표시한 버전과 현재 앱의 버전이 같다면, "최신 버전입니다." 라는 토스트 메세지를 띄우고,

맞지 않다면, url로 이동되게 구현 했습니다. 이 부분은 개발자들 입맛에 맞게 수정하시면 됩니다.(다이얼로그 등등) 



http://gun0912.tistory.com/8

 

'옛날' 카테고리의 다른 글

DataBase 생성 및 관리 [MySQL]  (0) 2015.12.14
MySQL 설치 방법  (0) 2015.12.14
앱 설치 경로 알아내기 (INSTALL_REFERRER) [Android]  (0) 2015.12.14
Loading GIF [Android]  (0) 2015.12.14
listView 원격이미지 [Android]  (0) 2015.12.14