회원가입∴아이디/비번찾기
홈으로


앱 버전 체크 스토어로 이동 [Android]
10년 전
보통 앱이 업그레이드 됐어도, 대부분의 사람들이 자동으로 안되면 업데이트를 하지 않는다.

자체서버를 사용하면 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로 이동되게 구현 했습니다. 이 부분은 개발자들 입맛에 맞게 수정하시면 됩니다.(다이얼로그 등등)
추천추천 : 469 추천 목록
번호 제목
1,348
Windows 서비스 관리자에서 Apache 서버가 멈췄을 때 시스템 자체를 재부팅
1,347
윈도우에서 Apache 서버 상태를 체크한 후 문제가 발생하면 자동으로 재부팅
1,346
윈도우 서버 2019 취약점 점검 보안
1,345
윈도우 서버 2019 취약점 점검 보안 (windows server 2019)
1,344
Windows 취약점진단 보안가이드라인
1,343
Windows Admin Center를 통한 서버 관리
1,342
윈도우 서버에서 실행되는 서비스 확인
1,341
Chrome NET::ERR CERT REVOKED 해결방법
1,340
cmd 명령어 (명령 프롬프트 명령어) 모음
1,339
Windows10 특정 프로그램(OCS 2007 R2)에서 첨부파일 드래그앤드롭이 안 되는 현상
1,338
윈도우 로그, 관리 이벤트 삭제
1,337
클린 부팅
1,336
[SFC 명령어, DISM 명령어]] 무결성 검사 및 시스템 파일 손상 파일 복구
1,335
Windows Defender 검사 기록 삭제하기
1,334
간단한 윈도우 10 정품 인증 (크랙프로그램 필요없음)
1,333
오류난 폴더 강제삭제 방법
1,332
크롬에서 플래시 항상 허용하도록 설정하기 (레지스트리) reg 파일 만들기
1,331
GPT 디스크를 MBR 디스크로 변환
1,330
MBR 디스크를 GPT 디스크로 변환
1,329
구글 검색을 200% 활용하게 해주는 검색 명령어 총정리
1,328
[Jquery] jQuery로 우클릭 방지, 드래그 방지, 선택 방지 (IE10, 파이어폭스, 크롬 확인)
1,327
php 사용자 접속IP, 브라우저정보, os정보, http, https 접속프로토콜 알아오기
1,326
[PHP] IE 브라우저 접속 검출하기
1,325
윈도우10 시스템 예약 파티션 확인 및 삭제
1,324
윈도우10 복구 파티션 삭제 방법
1,323
윈도우10 부팅지연 검은화면에서 몇분간 머무는 현상 해결방법
1,322
삼성노트북 바이오스 진입이 불가능한 경우 바이오스 재설치와 NVRAM 초기화
1,321
익스플로러(IE)의 구글 검색공급자 한글로 변경 방법
1,320
윈도우 10 기본 앱 삭제 및 복구
1,319
meta 태그 http-equiv 설정방법과 차이점
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침ㅣ모바일버전
Copyright ⓒ musictrot All rights reserved.