Podfile.lock에는 CHECKSUM이 부여됩니다. Podfile.lock의 유일성을 보증하는 해쉬값인 셈이죠. 만약 버전에 변경이 생기면 CHECKSUM 또한 변하게 됩니다.
pod update
pod update {팟이름}을 실행시키면, 코코아팟은 해당 팟의 업데이트된 버전이 있는지 검색합니다. Podfile.lock을 참조하지 않죠. 이 명령어는 팟을최신 버전으로 업데이트시켜주는 것입니다. (단, Podfile의 버전 조건과 일치해야 합니다.) 단순하게pod update만 실행시키면 코코아팟은 모든 팟에 대해 가능한 최신 버전으로 업데이트를 실행합니다.
pod outdated
pod outdated를 실행하면, 코코아팟은 Podfile.lock에 리스트된 것보다 새로운 버전을 가진 모든 팟을 나열합니다. 이 팟들에 대해pod update {팟이름}을 실행한다면 업데이트가 될 것이라는 것을 의미합니다. (역시나 Podfile의 버전 조건과 부합하는 한!)
pod repo update
/Users/{사용자이름}/.cocoapods/repos에 있는 모든podspec파일을 업데이트 합니다.podspec파일에는 해당 pod 의 주소 등 중요한 정보들이 담겨있습니다.
~/.cocoapods/repos에는 모든 pod에 대해 가능한 버전들의podspec파일들이 모여있습니다.pod repo update를 실행하게 되면 최신podspec파일들로 업데이트되게 되는 것입니다. 추가한 라이브러리에 대한podspec이 업데이트되지 않아 오류가 날 경우 이 명령어를 통하여 해결할 수 있습니다.
Podfile.lock을 커밋하세요!
동료와 같이 협업하고 있다면! 꼭Podfile.lock을 공유해야 합니다. pod 버전을 모두가 동일하게 쓰도록 유지시키는 역할을 하는 것이죠. 그리고 Podfile이 수정될 일이 생긴다면pod install명령어를 통해 의존성을 관리하면 됩니다. 만약 동료들과 같은 CHECKSUM을 얻는데에 실패했다면 간단하게rm -rf Pods && pod install을 실행하면 됩니다. 😎
iOS 10 버전 부터, Apple은 앱 개발자에게 사용하는 프레임웍에 대한 설명을 info.plist 파일에 기술하도록 요청하고 있습니다. 이 설명은 사용자에게 해당 기능 사용에 대한 허가를 요청할때 보여지게 됩니다(e.g. location, accelerometer, etc.). 이 요구사항은 탭조이 같은 써드파티 SDK까지 확대 되었습니다. 탭조이는 편의를 위해 탭조이가 사용하고 있는 프레임웍에 대해서 info.plist에 포함해야할 내용을 다음과 같이 제공해 드립니다.
Function
Key
Suggested Text
Accessing media library
NSAppleMusicUsageDescription
광고 경험 향상을 위해서 미디어 라이브러리가 사용됩니다.
Accessing location data all time*
NSLocationAlwaysUsageDescription
광고 경험 향상을 위해서 위치 정보에 접근할 수 있습니다.
Accessing location data when the app is in use*
NSLocationWhenInUseUsageDescription
광고 경험 향상을 위해서 위치 정보에 접근할 수 있습니다.
Accessing accelerometer
NSMotionUsageDescription
광고 경험 향상을 위해서 가속센서를 사용할 수 있습니다.
Accessing photo library
NSPhotoLibraryUsageDescription
개인화된 광고 경험 향상을 위해서 사진 정보에 접근할 수 있습니다.
* SDK 11.9.0부터 CoreLocation.framework 은 optional 입니다.
만일 위와 같은 정보를 info.plist에 추가하지 않으면 다음과 같은 사유로 앱스토어 등록이 거부될 수 있습니다.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSAppleMusicUsageDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSLocationAlwaysUsageDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSLocationWhenInUseDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSMotionUsageDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.