2008-11-08 19 views
3

앱 스토어에 내 iPhone 앱의 두 가지 버전을 제공하고 싶습니다. 하나는 무료이며 애플리케이션을 통해 표시되는 항목의 수에 제한이 있으며, 다른 하나는 완전히 무제한입니다.동일한 소스 코드에서 "무료/데모"및 상용 응용 프로그램을 모두 생성하는 가장 좋은 방법은 무엇입니까?

두 앱의 소스 코드는 정확히 같지만 앱의 항목을 저장하는 SQLite 데이터베이스 만 다를 수 있습니다.

나는 두 버전의 앱이 다른 번들 이름과 다른 아이콘을 가질 필요가 있음을 알고 있습니다. 데이터베이스, 아이콘, 펜촉 끈 등을 사용자 정의 할 수 있도록 소스 코드 디렉토리를 완전히 복사하지 않도록하는 방법을 찾으려고합니다.

모든 것을 복제하지 않고이를 수행 할 수있는 좋은 방법이 있습니까? ?

답변

13

프로젝트에 두 번째 타겟을 만드십시오. 하나는 전체 데이터베이스를 포함하는 모든 기능을 갖춘 응용 프로그램이 될 수 있으며 새로운 대상은 데모 데이터베이스와 함께 데모 빌드가됩니다. 우리는 십자말 풀이로이 작업을 수행하며 정상적으로 작동합니다. 그런 다음 모든 소스를 한 곳에서 관리 할 수 ​​있으며 동기화되지 않도록 걱정하지 않아도됩니다.

+0

벤, 저는 그 생각을 가지고 놀 것입니다.Nib 파일 중 일부에서 다른 문자열을 사용하는 문제는 어떻습니까? – jpm

+0

다른 xib 파일이나 #ifdef 문을 사용하여 메모 작성자가 할 수 있습니다. 우리는 각 대상에 대해 다른 pch 헤더를 가지고 있으며 데모 상태를 제어하기 위해 거기에 #define 묶음이 있습니다. –

0

새 프로젝트를 만든 다음 원본 프로젝트와 동일한 원본 파일을 참조하도록합니다 (로컬 복사본을 만들지 마십시오).

0

두 가지 버전의 앱에 서로 다른 SQLite 데이터베이스가 있어야하는 특정 iPhone 관련 정보가 있습니까?

그렇지 않으면 하나의 파일 만 변경하여 단일 코드베이스를 컴파일 할 수있는 교환 가능한 키를 사용하여 라이센스 부여 메커니즘을 구현할 수 있습니다. 런타임에 앱은 해당 파일을 검사하여 저장 용량을 축소하거나 무제한으로 허용합니다. 추가 혜택 (iPhone-store에서 지원하는 경우)은 데이터 손실없이 전체 버전을 잠금 해제하는 것이 매우 간단해야합니다.

물론 이러한 솔루션은 고객이 기술에 익숙하고 악의적이며 코드를 디 컴파일하기 쉽다면 비즈니스에 해를 끼칠 수 있습니다.

1

사용자가 정식 버전으로 업그레이드하기로 결정한 경우 기존 데이터를 통해 전송할 수있는 메커니즘이 없다면 사용자가 부정적인 반응을 보일 가능성이 높습니다. 데이터의 내용이 작고 대부분 텍스트로 표현 될 수 있다면이를 전달하기위한 URL 체계를 구현하는 것이 좋습니다.

+0

웹 서비스를 사용하여 데이터를 릴레이하지 않으면 iPhone 앱이 서로 데이터를 공유 할 수 없으므로 데모에서 자동 가져 오기 옵션을 사용할 수 없습니다. – Marco

7

조건부 컴파일을 신중하게 사용하십시오. 어떤 언어로 작업하는지 모르지만 C/C++ 조건문 컴파일은 매크로 전 처리기와 ifdef를 사용하여 수행됩니다. 다음과 같이 코드를 작성하십시오.

#ifdef FULL_APP 
    // unlimited size 
    #define SIZE -1 
#else 
    #define SIZE 100 
#endif 

컴파일러 명령 행에서 적절한 매크로 정의를 제공하십시오.

gcc program.cc -o program.o -DFULL_APP 

당신은 실행 파일에 켜 다양한 방법으로 또는 다양한 기능 해제 조건부 컴파일 및 매크로 처리기를 사용하거나 프로그램의 다른 측면을 수정할 수 있습니다.

-2

나는 이것을 탐구했으며 "시험 버전을 다운로드하고 웹을 통해 업그레이드"하는 것은 앱 스토어의 조항을 위반하는 것으로 보입니다. 상점에 앱의 두 가지 버전이 정말로 필요할 것 같습니다. (Ben Gottlieb의 항목을 다시 참조). 그래서 하나의 소스, 두 개의 배포판.