Seize the day

POST : Android Dev Study

Promotion key를 등록하여 광고 제거하기

Checklist app에 광고가 있는데, 마켓에 배포된 버전을 사용할 경우에는 개발자도 광고를 제거할 수 없다. 개발자는 인앱구매가 정책적으로 불가능하고, 특정 단말에서만 광고를 제거하는 기능이 없기때문이다. 이 앱의 독일어 번역을 도와주신 분이 "번역 도와줬는데 할인이나 Promotion key같은 거 없냐"고 물어봐서 일단 급하게 Promotion key를 등록해서 광고를 제거시키는 기능을 만들어 보았다. 


동작 방식은 

1. 앱은 디바이스ID와 입력 받은 프로모션Key를 가지고 서버에 요청한다.

2. 서버는 프로모션Key가 존재하는 지 보고, 디바이스ID로 Key가 이미 사용중인지를 체크한다. 사용중이지 않다면 디바이스ID를 RSA암호화해서 보내주고, 해당 포로모션Key에 디바이스ID를 저장한다. 

3. 앱은 서버에서 암호화된 디바이스ID를 받으면 DB에 저장한다. 

4. 암호화된 디바이스ID를 RSA복화화해서 폰의 디바이스ID와 일치하면 광고를 제거한다. 


이런 방식의 장점은 프로모션KEY 1개당 하나의 단말에서만 유효하게 동작시킬 수가 있고, 디바이스ID의 암호화는 서버에서만 할 수 있기 때문에 앱이 리버스 엔지니어링되더라도 KEY-GEN같은 것을 만들 수가 없게된다. 앱을 디컴파일해서 인증코드 1줄을 지우고 다시 패키징한다면 이 모든게 의미 없기는 마찬가지다. 


Client 코드

RSAHelper



PromotionUtils



서버쪽 코드

PromotionUtils


BackEndBO (Google app engin)


top

posted at

2017. 7. 19. 23:35


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크