2012-12-28 3 views
6

나는 0.99 달러의 가격으로 판매되는 앱을 가지고 있습니다. 인앱 결제를 구현하여 가격에 대해 특정 기능을 잠금 해제 할 수있는 옵션을 무료로 제공 할 수 있습니다. 나는 그것을 허용하기 위해 이미 코드를 수정했다. 문제는 ... 이미 앱을 구매 한 1000 명이 넘는 사람들을 구매 한 것으로 표시하고 모든 기능을 잠금 해제 할 수 있습니까?무료/인앱 결제로 지불하기

+0

어떤 앱이 있습니까? 오프라인 앱입니까? 또는 귀하가 제공하는 일부 서비스와 함께 인터넷을 사용합니까? 사용자가 귀하의 앱을 사용할 계정을 만드나요? –

+0

오프라인 앱입니다. 사용자 계정이나 기타가 없습니다. – Roger

답변

3

일부 영구 저장 장치를 사용하는 경우이 문제를 해결할 수 있습니다.

SharedPreferences의 경우 처음 실행시 SharedPreferences.contains()을 사용하여 환경 설정 중 하나를 확인하십시오. 앱이 포함되어 있으면 앱이 이미 설치되어 있어야합니다. 그렇지 않은 경우 사용자에게 새로운 (무료) 것으로 표시하는 또 다른 환경 설정을 설정하고 매번 확인하지 않도록 한 번 더 설정하십시오.

환경 설정에 "기본값"값이없는 경우에만 작동 할 수 있습니다. xml에 기본값을 설정하면 포함 된 것으로 표시됩니다.

SD로 전송되는 애셋 또는 유사한 일회성 설정이있는 경우 비슷한 작업을 수행 할 수 있습니다. 첫 번째 작업을 수행하기 전에 이미 완료되었는지 확인하십시오.

SQLite DB를 사용하는 경우 DB 버전을 증가시키고 현재 버전 (또는 이전 버전)에서 오는 경우 onUpgrade()에 "지불 됨"으로 표시 할 수 있습니다.

내가 말했듯이, 해킹이지만, 앱 설치가 업그레이드인지 또는 초기 설치인지 확인하기위한 "공식적인"방법을 모르겠습니다. 여기 몇 가지 함정이 있습니다. 예를 들어, 이전 유료 고객이 새 버전을 설치하기 전에 완전히 제거하거나 새 기기에있는 경우 ...

+0

이것은 단지 작동하지 않을 것입니다. 사용자가 이전에 유료 버전을 가지고 있었지만 나중에 유료 버전을 제거한 경우를 생각해보십시오. 이제 그는 새로운 IAB 버전을 설치하려고합니다. 분명히 당신의 방법은 그가 이미 그것을 지불 한 동안 그를 처음 사용으로 분류합니다. – abedfar

+0

@abedfar 필자는 마지막 문장에서이 사건을 명시 적으로 언급합니다. 앞에서 말했듯이 이것은 해킹이며 지난 3 년 동안 상황이 바뀌었지만 모든 사용자에게이 "올바른"방법을 적용하는 좋은 방법은 아직 없다고 생각합니다. – Geobits

+0

네 말이 맞아. 유료 앱을 무료로 변경하면 기존 유료 사용자 (현재 유료 앱에서하고있는 것)를 구별하기 위해 Google 라이센스 서버를 가져올 수있을 것이라고 생각하십니까? 유료 앱을 무료로 변경하자마자 Lic 확인이 의미가 없어지고 Google이 모든 Lic 검색어에 대해 true를 반환해야하기 때문에 나는 개인적으로 의심합니다. – abedfar

관련 문제