본문 바로가기
프로그래밍/iOS

라이트 버전 어플 만들기

by 백룡화검 2012. 7. 21.

출처 : http://cafe.naver.com/mcbugi/207332


안녕하세요

똥그러니 입니다.

유료 어플만든후 무료 어플을 만들거 아니면 비슷한 어플을 몇개 더 만들때

보통분들은 프로젝트를 전체 폴더 통째로 복사해서 하시더라고요...

그럴경우 어느 한부분에 버그등으로 인해 수정사항이 발생했을경우

복사했던 모든 소스를 수작업으로 수정해야한다는 치명적인 단점으로 사소한 실수를 유발할수 있더라고요...

그래서 보통 라이트 버전을 만들때 한개의 프로젝트에  TARGET을 추가해서 어플을 새로 만드는 방법을 공유하고자 합니다.

즉!! 하나의 프로젝트에서 여러개의 어플이 나오게 하는방법 입니다.



설명 :
프로젝트 클릭 -> 일단 타켓을 하나 더 만든다(프로젝트 밑에 타겟이 있다)
위 링크에서 보면 멀티 타켓팅이라는 단어가 등장하는데
멀티 타켓팅이 가능하기에
하나의 프로젝트에서 여러가지 버전의 어플이 나올수 있는것이다.

지금부터 LITE 버전을 만들기 위한 절차를 시작한다

1. 타켓을 만들고 위의 링크와 4버전의 다른점은 xcode4는 타켓클릭 -> Build Setting ->
Preprocessor Macros -> 구분 키워드 입력 (LITE 또는 다른 식별가능한 키워드를 넣어준다)

2. 타켓클릭하면 정보가 나온다
Build Settings -> All -> Combined 클릭
그중에
Apple LLVM compiler 3.0 - Preprocessing 칸에 Debug와 release 옆칸에 내가 원하는 키워드를 넣어준다
자는 LITE라고 넣었다(라이트버전을 만들것이니까)

debug 는 개발할때 사용하는 변수이고
release 는 엡스토어에서 발매 되었을때 사용하는 변수이다

3. 그리고 이제 class 코드내에서 키워드인 LITE가 맞는지 검사하는 if else 구문을 삽입하여 분기 처리한다
#ifdef LITE
NSLog(@"Lite-Version");
#else
NSLog(@"Full-Version");
#endif


여렇게 하면 타켓에 설정한 키워트(여기서는 LITE)에 따라 분기 처리된다.
즉 저 분기내용에 따라서 컨텐츠가 보이거나 안보이게 처리할수 있는것이다.


etc 여담으로 LITE대신에 'TYPE번호'를 넣게 된다면 이렇게 사용할수 있다.

#ifdef TYPE0
    #define CAULTY_CODE @"sdfsdfas"
    #define PRODUCTID @"123123123"
#elif TYPE1
    #define CAULTY_CODE @"werwer"
    #define PRODUCTID @"234234"
#elif TYPE2
    #define CAULTY_CODE @"sdfgsdgww"
    #define PRODUCTID @"345345"
#else




원본
http://www.changwoo.net/bbs/bbsDetail.do?&num=421

저같은 경우에는 저분기처리에 유료 무료 어플 구분에 따라서 카울리 베너가 보이고 안보이고를 하는 로직을 넣었던 경험이 있었어요~~

타켓하나에 어플 하나가 생성됩니다.
그러므로 타켓마다 프로비저닝이 달라야겠죵?ㅎㅎ