🔴 필요하게 된 상황
Staccato 프로젝트는 Dev 서버와 Release 서버가 분리되어있다.
그래서 Config 파일을 Debug, Release로 각각 만들어 환경을 분리했다.
그러나 문제는 토큰이었다.
Release 환경에서 생성한 토큰은 Debug 환경에서 작동하지 않는다.
그런데 토큰은 UserDefaults에 저장되어있기 때문에 매번 앱을 삭제했다가 다시 빌드해야하는 번거로움이 있었다.
(BundleID가 같기 때문에 UserDefaults가 남아있는 상태로 앱이 덮어씌워지기 때문에 삭제해야 함)
이 문제를 해결하기 위해, Bundle ID로 dev용 앱을 분리하기로 했다.
그럼 아래 사진처럼 2개의 앱이 있게 된다.
🟢 구현 방법
1. Scheme 추가
Manage Schemes... -> + 버튼 클릭 -> Staccato-iOS-dev를 추가
2. Scheme Build Configuration 편집
Staccato는 Release로, Staccato-dev는 Debug로!
3. 아이콘 변경
Assets에서 AppIcon-dev 파일 추가 후, BuIld Settings에서 debug 아이콘 변경
4. Bundle ID 변경
Signing & Capabilities > Packaging에서 Debug의 ID 변경 (뒤에 -debug)
그런데 빌드를 하니 프로비저닝파일이 없다는 에러가 떴다.
5. 프로비저닝파일 갱신
Apple Developer > Account > Certificates, Identifiers & Profiles에서 다음처럼 수정했다.
5.1. Identifiers 에서 새로 만든 Bundle ID 생성
5.2. Profiles 에서 dev 프로파일 클릭 > Edit 클릭 > App ID를 5.1에서 생성한 ID로 변경 > Download
5.3. 맥북 Finder에서 "~/Library/Developer/Xcode/UserData/Provisioning\ Profiles" 경로로 이동하여
기존 프로비저닝 파일 삭제 후, 5.2에서 다운로드한 파일 더블클릭하여 설치
6. 앱 이름 변경
Build Settings > Bundle Display Name에서 Debug일 때 앱 이름을 Staccato-dev로 변경
🔵 결과
Scheme을 dev로 선택하고 빌드하면
테스트플라이트 또는 앱스토어에서 설치한 앱을 덮어쓰지 않고 새롭게 앱이 추가됨.
📔 참고자료
- https://rriver2.tistory.com/entry/Dev-%EC%9A%A9-%EC%95%B1-%EB%B6%84%EB%A6%AC%ED%95%98%EA%B8%B0