IAB가 포함 된 무료 버전을 얻으려면 유료 버전을 제거하거나 무료로 변환 할 필요가 없습니다. 유료 버전을 무료 버전과 별도의 앱으로 유지해야하는 몇 가지 이유가 있습니다.
한 가지 이유는 앱에서 지원하는 Android 버전에 따라 모든 기기의 10 %가 인앱 결제를 지원하지 않을 수 있기 때문입니다 (예 : Android 마켓의 이전 버전이 자동이 아니기 때문에 업데이트 및 IAB3을 지원하지 않습니다. 이는 유료 버전을 유지하는 논거를 제공합니다.
또한 사용자가 무료 앱을 IAB3을 지원하지 않는 기기에 설치하면 앱에서이를 감지하고 유료 버전 링크를 제공하여 IAB3 대체 버전으로 설치할 수 있습니다. 경로를 통해 앱을 업그레이드 할 준비가되었음을 알려줍니다.
물론 유료 버전을 계속 사용하면 이미 지불 한 사용자와 그렇지 않은 사용자를 구별하는 데 아무런 문제가 없습니다.
유료 버전을 유지하기로 결정한 경우 무료 버전에 인앱 결제를 추가하면 유료 기능 세트로 업그레이드 할 수 있습니다. 이는 무료 앱을 제거하고 유료 앱을 설치하는 것보다 덜 파괴적인 업그레이드 경로를 찾는 사용자를 만족시킬 것입니다.
아직하지 않았다면 대부분의 앱 기능을 보유하고 무료 버전과 유료 버전간에 공유 할 수 있도록 프로젝트 라이브러리를 만들고 싶을 것입니다. 유료 프로젝트를 바로 그 라이브러리로 변환 한 다음 그 라이브러리를 사용하는 유료 및 무료 두 개의 프로젝트를 생성하게 될 것입니다. 두 버전을 하나의 무료 버전으로 통합하려는 동기 중 하나가 두 개의 응용 프로그램을 유지해야한다는 우려 사항이있는 경우 프로젝트 라이브러리를 사용하면 오버 헤드가 크게 줄어들 수 있지만 0이 아닙니다.
이와 관련하여 저는 프로젝트 라이브러리의 주요 활동을 상속받은 그러한 프로젝트 라이브러리를 사용하는 각 앱에서 활동을 만드는 것이 유용하다는 것을 알았습니다. 주요 프로젝트 라이브러리 활동은 추상 클래스가 될 수 있으며이를 사용하는 APK 생성 프로젝트에서 상속받은 활동 클래스가 제공하는 특정 메소드가 있습니다. 또는 특정 메소드를 (추상적으로 정의하지 않고) 무해한 방식으로 기본값으로 설정 한 다음 해당 프로젝트 내의 파생 클래스에서 재정의 할 수 있습니다. 이러한 재정의는 프로젝트 라이브러리의 동작을 사용중인 특정 앱 (예 : 무료 대 유료)의 요구 사항에 맞게 조정하는 데 사용할 수 있습니다. 또한 onCreate(), onResume() 등과 같은 미리 정의 된 메소드를 재정 의하여 해당 애플리케이션 (예 : 무료 및 유료) 간의 차별화 행동을 동일하게 마무리 할 수 있습니다.
마지막으로, 두 버전 APK간에 설치를 분할하는 것에 대해 너무 걱정하지 않아도됩니다. 무료 버전은 설치 및 시험의 용이성 때문에 사자의 몫을 얻을 수 있기 때문입니다. IAB 업그레이드 프로세스가 원활합니다.
이 질문은 프로그래밍이 아닌 라이센스에 관한 주제이기 때문에 주제가 아닌 것처럼 보입니다. –
이것은 논쟁의 여지가없는 주제입니다. 그가 요구하는 Android SDK 프로그래밍 구현 세부 사항입니다. – Monstieur