본문 바로가기

IOS Swift

개발용, 배포용 App 나누기(feat. iOS)

목차

  1. 개발/배포용 나누게 된 배경
  2. 개발/배포 나누기

1. 개발/배포용 나누게 된 배경

혹시 모를 실수와 편의성을 위해 나누었습니다. 

서버가 테스트/실서버 2개로 나뉘어져 있습니다. 그런데 앱은 딱히 구분이 안되어 있기 때문에 테스트할 때마다, 심사 올릴 때마다 매번 base url을 바꿔주는 식으로 되어 있었습니다. (실서버 -> 테스트 서버) or (테스트 서버 -> 실서버)

그래서 실수로 테스트 서버를 앱스토어에 올릴지 혹시 모르는 일이니 가능성을 막고 좀 더 편하게 할 순 없을까? 고민했고 방법을 알아봤습니다.

 

2. 개발/배포용 나누기

개발/배포용으로 나누는 핵심은 테스트용 앱을 쓰고 있는지 실서버에 연결된 배포용 앱을 사용하고 있는 지 확실하게 해주는 것이라고 생각합니다.

그리고 이것을 달성하기 위한 방법은 블로그글도 찾아보고 주변에도 물어봤는데 '개발/배포용으로 나누는 방법은 팀에 따라 다르구나'를 깨달았습니다.

 

테스트용 앱인지 배포용 앱인지 확실하게 알려주려면 어떻게 해야 하는지?

-> 테스트/실서버용으로 2개의 앱으로 나뉘어 있으면 확실하게 어떤 앱이 어떤 서버로 연결되어 있는지 확실하게 알 수 있습니다.

Dev용 아이콘 내가 만듬 v 이쁘다

암튼 저렇게 앱 2개 만들려면 

  1. Bundle Identifier 다르게 하기
  2. 앱 아이콘 다르게 하기
  3. 앱 이름 다르게 하기
  4. Base url 다르게 하기

를 해주면 됩니다. 그럼 끝. (구체적인 방법은 밑에 써놨어요)

그런데 말입니다. 나만 테스트해볼 거면 시뮬레이터에다가 바로 넣어도 되지만 다른 분들이 테스트해보시거나 다른 많은 테스트 기기에다가도 앱 2개를 넣어줘야 하잖아요. 그럼 어딘가에 배포를 해야 합니다. (어디에 배포하는지 팀마다 다름)

 

4가지 배포 방법

  1. 앱스토어 커넥트: TestFlight 에 배포
  2. Ad Hoc: 개발자 계정 홈페이지에 등록된 기기에 배포
  3. Enterprise: 사내 배포용
  4. Development: ipa 파일 추출

여기서 저는 1번(실서버용)과 2,4번(테스트용)을 사용하기로 정했어요.

이유는 어차피 실서버 연결된 앱은 배포하려면 앱스토어에 올려야 하니까 1번으로 선택했고,

테스트용 같은 경우 1번을 안 하고 2,4번을 한 이유는 테스트플라이트에 앱이 올라가기까지 길면 30분 정도 걸려서 그 시간을 절약하고자 2,4번을 선택했습니다.

자 이제 드디어 개념정리 머리말 끝났습니다. 그럼 이제 본격적으로 구체적인 내용으로 들어가 봅시다!!


 

개발/배포용 앱 2개 만들기

  1. Bundle Identifier 다르게 하기
  2. 앱 아이콘 다르게 하기
  3. 앱 이름 다르게 하기
  4. base url 다르게 하기

일단 위의 4가지를 수행해야 하는데 저는 Target과 Scheme 생성, 그리고 info.plist 및 코드 수정을 통해서 구현했어요.

일단 순서대로 차근차근 해볼게요.

1. Target 생성 (Target에 따라서 개발 / 실서버 각각 라이브러리를 다르게 줄 수 있음)

기존 타겟을 복제해 줍시다.

그럼 이렇게 되는데 엔터를 클릭해서 이름을 바꿔줍시다. 저는 Dev용으로 쓸 거니까 Dev-VideoConverter로 할게요.

이제 Dev-VideoConverter에서

  1. Bundle Identifier 다르게 하기
  2. 앱 아이콘 다르게 하기
  3. 앱 이름 다르게 하기
  4. base url 다르게 하기

를 해줄 거예요.

2,3 번 앱 아이콘, 앱 이름 바꾸기

혹시라도 앱 이름을 바꿨는데 안 바꿔지면

info.plist 

다국어를 위한 파일

프로젝트 빌드셋팅

에 지정되어 있는지 확인해 보셔요! 저는 다국어 설정 해놓아서 안 먹는 거 같아요.
아무것도 없는 프로젝트 만들어서 해봤는데 잘 되네요.

 

1번 Bundle Identifier 바꾸기

4번 Base url 다르게 하기

Dev용 info.plist에 API_URL 을 추가해 줍니다.

아 근데 개발용 info.plist 이름이 Dev-VideoConverter 가 아니라 처음에 복제했을 때 그대로네요. 

이것도 바꿔줄게요.

API_URL을 개발/배포용 앱에서 info.plist를 다 설정해 줬다면 코드단에서 info.plist의 API_URL을 가져다가 쓰면 됩니다.

let serverBaseURL: URL = {
    if let info = Bundle.main.infoDictionary {
        if let apiUrl = info["API_URL"] as? String {
            return URL(string: apiUrl)!
        }
    }
    
    return URL(string: nil)!
}()

 

휴우.. 1,2,3,4번 모두 다르게 바꿨습니다. 고생했다!!

Target에 대한 설정은 여기서 끝.

다음~~

 

2. Scheme 생성

Target을 복제한 후에 위 그림처럼 Scheme가 생겼을 거예요. 근데 아까 이름 바꿨는데 Target만 바뀌고 Scheme은 안 바뀌었네요.

이것도 바꿔줄게요.

이제 각각 선택해서 실행하면

시뮬레이터에 2개 앱 만들기 성공@@@

근데 쓰다 보니 글이 엄청 긴데 테스트용 배포는 다음글에 - - -


 

테스트용은 Firebase에다가 배포했어요. 그 이유는 여기 블로그글에 작성해놨어요~!
https://hongz-developer.tistory.com/218

 

Firebase Distribution(feat. iOS)

목차 Firebase Distribution을 선택한 이유 Firebase Distribution 이란? .ipa 파일 생성하는 법 Firebase Distribution 기능 사용하기 1. Firebase Distribution을 선택한 이유 테스트앱과 배포앱을 나누던 도중 배포하는

hongz-developer.tistory.com

 

 

반응형

'IOS Swift' 카테고리의 다른 글

iOS App 강제 업데이트 기능  (0) 2023.01.10
iOS 긴급 심사 요청 후기  (2) 2023.01.05
iOS WebView(feat. Swift)  (0) 2022.08.19
Property Wrapper  (0) 2022.08.08
Swift Codable로 Json null 값 파싱하기  (0) 2022.08.02