박상권의 삽질블로그

[안드로이드/Android]플레이스토어 버전 체크하는 방법 (업데이트 체크) 본문

IT/Android-TIP (한글)

[안드로이드/Android]플레이스토어 버전 체크하는 방법 (업데이트 체크)

박상권 2015. 7. 1. 09:30

제가 운영하고 있는 유튜브 채널 '개발자 테드박'에도 많은 관심 부탁드려요.
스타트업/개발자/IT 관련된 여러 영상을 올리고 있습니다.
영상보러가기



블로그를 Medium으로 옮겨서 운영하고 있습니다.
앞으로 새로운 글은 모두 미디엄 블로그를 통해서 올릴 예정입니다.
미디엄에서 다양하고 유익한 포스팅을 살펴보세요
미디엄 블로그 보기




안드로이드 어플리케이션을 개발하고 계속 업데이트 하다보면 사용자가 최신버전을 사용해주길 바라는 경우가 많이 있습니다.

새로운 기능이 추가되었을경우도 그럴것이며, 해당 버전에 문제가 발생해서 다음버전으로 업데이트 해야 하는 경우가 있을것입니다.


와이파이가 연결되어있는경우 [자동업데이트]가 되도록 설정되어있는 경우도 많지만, 그렇지 않은 경우 또한 많이 있습니다.





실제로 현재 제가 개발해서 운영하고있는 서비스중에 가장 심한경우 절반정도만 최신버전을 사용하고 그 외에는 이전 버전을 사용하고 있는 경우도 있습니다.





이러한 문제를 해결하기위해서 개발자들은 최신의 버전정보와 사용중인 어플의 버전정보를 비교해서 최신버전이 있을경우 강제적으로 업데이트를 하도록 하는 경우를 구현합니다.

( 혹은 업데이트 팝업을 띄우고 [업데이트] 혹은 [그냥 사용] 을 선택하도록 하기도 합니다.)






제가 처음에 시도했던 방법은 특정 위치에 최신버전 정보를 저장해두고 실행시마다 해당정보를 가져와서 비교하는 방법이었습니다.

구현방법은 여러가지로 할수 있겠지만 호스팅서버의 위치에 version.html이라는 파일을 만들고 버전숫자(16)을 저장해두고 이를 현재 사용중인 어플과 비교했습니다.



이 방법의 단점은 귀찮다! 였습니다.

업데이트가 이루어질때마다 해당 위치에 최신버전 정보도 갱신해주어야하는 사소한 귀찮음이 있었습니다.



그래서 매번 신경써서 정보를 바꾸지 않아도 최신정보를 가져올수 있는 방법을 생각했습니다.

플레이스토어의 앱 소개페이지에 버전정보를 이용하는 방법을 택했습니다.






MarketVersionChecker 클래스는 해당 패키지명의 플레이스토어 소개페이지에 있는 버전정보를 가져와서 String으로 리턴해주는 작업을 해줍니다.











사용법


1. GooglePlay 버전 정보 가져오기



String store_version = MarketVersionChecker.getMarketVersion(getPackageName());







2. 현재 해당 앱의 버전정보 가져오기



try {
String device_version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}








3. 두개의 버전정보 비교하기




if (store_version.compareTo(device_version) > 0) {
// 업데이트 필요

} else {
// 업데이트 불필요

}



MarketVersionChecker 출처







버전이 업데이트 될때마다 업데이트 팝업을 띄우는 방법보다는 일정 버전이상일때 팝업을 띄우도록 하는 방식이 더 좋습니다.


예) 

5.0.x로 동일한 버전에서는 업데이트팝업을 띄우지않고 5.1.x 이상일때만 업데이트 팝업을 띄우시면 됩니다


최신버전: 5.0.3 , 어플버전: 5.0.1  <- 업데이트 팝업 띄우지 않음

최신버전:5.1.0, 어플버전: 5.0.3 <- 업데이트 팝업 띄움







<주의하세요!>

실제 서비스에 적용시켜서 운영하다보면 웹페이지의 어플 버전은 변경되어서 반영되어있는데 사용자들의 플레이스토어에서는 반영되지 않아있는 문제가 발생하기도 합니다.

(대부분은 잘 반영되어있고 일부에서 문제가 발생합니다)


이는 플레이스토어 앱 자체에 캐시되어있는 데이터때문에 변경된 정보가 제대로 반영되지 않는 문제가 있는것 같습니다.

지금까지 제가 찾아낸 최신버전 플레이스토어 반영방법은 아래와 같습니다.

1. 뒤로가기(혹은 앱 종료)로 플레이스토어 앱을 완전히 종료

2. 휴대폰 기기 재시작

3. 익일 자동반영



Comments