이 글을 읽고 이해한 내용을 적었습니다
API 연결을 하다보면 사용자의 고유 Key 값이 필요할 때가 종종(아니 거의 대부분..) 있지요
이런 고유한 값은 공개되면 개인정보가 노출되는 것과 다름 없어요
그리고 타인이 무단으로 나의 Key 값을 사용하게 될 수도 있구요
그런걸 방지하기 위해서 프로젝트에서 API KEY를 숨기는 방법 중, plist를 사용하는 방법이 제일 좋아보였습니다
나중에는 xcconfig, shceme 으로 하는 방법도 쓰려고 해요
🩵 Property List 생성 및 세팅
plist 파일을 하나 생성해주세요
그리고 내부에 API_KEY라는 key를 생성한 뒤 "API KEY를 입력해주세요" 같은 임시 문구를 적어둡니다
실제 key 값은 나중에 적을거에요!
🩵 Bundle 확장
Bundle은 실행할 수 있는 코드 & 해당 코드의 자원을 가지고 있는 디렉토리에요
info.plist, assets 등이 여기에 해당되는데
우리는 key 값을 plist로 관리하기 때문에 여기에 접근하려면 Bundle을 통해야 합니다
특히 main은 Bundle 중에서도 앱이 실행되는 코드가 위치해있어요
그래서 나중에는 Bundle.main.apikey 이렇게 접근해서 사용할 수 있답니다
extension Bundle {
var apiKey: String {
guard let file = self.path(forResource: "plist 이름", ofType: "plist") else { return "" }
guard let resourse = NSDictionary(contentsOfFile: file) else { return "" }
guard let key = resourse["API_KEY"] as? String else { fatalError("이름.plist 에 API_KEY 설정을 해 주세요.") }
return key
}
}
🩵 Github에 올리고 추적 중지
저는 여기까지 해두고 깃허브에 업로드합니다
그렇게 되면 API_KEY에 "API KEY를 입력해주세요" 값이 들어간 채로 Github에 올라가게 되겠죠?
그런 다음 해당 파일 추적을 멈추면
우리가 실제 사용해야하는 key 값을 입력해도 깃에 변경사항이 인식되지 않아요!
git update-index --skip-worktree (파일경로)/이름.plist
이렇게 해주면 해당 파일의 변경사항이 더이상 추적되지 않습니다
.gitignore를 사용해서 애초에 추적을 막는 것도 괜찮은 방법이지만
이런 방식으로도 진행할 수 있다는 것을 알게 되었네요ㅎㅎ
plist에서 관리하면 여러개의 key값을 사용하게 되어도 직관적이고 편하게 관리할 수 있을 것 같아요!
https://developer.apple.com/documentation/foundation/bundle
https://developer.apple.com/documentation/bundleresources/information_property_list
'iOS > Swift' 카테고리의 다른 글
[Swift] iOS 커스텀 프레임워크 생성하고 사용하기 (0) | 2024.02.23 |
---|---|
[Swift] http API 허용하기 - Info.plist (0) | 2024.02.21 |
[Swift] 위치 정보 접근 권한 (GPS) 요청하고 처리하기 (1) | 2024.02.14 |
[Swift] iOS 스플래시 / 런치 스크린 화면 만들기 (0) | 2024.02.13 |
[Swift] Core Data(1) - 사용 설정하기 (0) | 2024.02.02 |