- Keychain Sharing
- App Groups
여러 앱에서 키체인 아이템을 공유하기 위해서 Keychain Sharing 또는 App Groups 기능을 활성화하고 keychain access group 또는 app group을 지정한다.
- 일반 데이터 공유
- kSecAccessGroup 기본 값
키체인 공유를 위해 access group 지정을 위해 team ID가 필요하게 되는데, 이 때 team ID를 어떻게 알 수 있을까?
유료 개발자의 경우 개발자 홈에서 접속해 확인 할 수 있다.
그럼 무료개발자 계정의 경우 team ID는 어디서 확인 가능할까?
시간이 흘러 이제 iOS 16이 나왔고, 이제는 iOS 10에 추가된 UNUserNotificationCenter
를 이용해 로직만 사용하는게 당연하다.
하지만 레거시 코드들에는 사용하지 않는 예전 푸시 관련 코드들이 같이 남아 있어, 간만에 푸시작업을 할 떄마다 헷갈리게 만든다.
UIApplicationDelegate의 url-open 관련 메시지들도...
때문에 n년 후의 나를 위해 정리를 남긴다.
APNS에 기기등록을 위해
UIApplication.registerForRemoteNotifications
호출
빌드 시 마다 CFBundleVersion
을 갱신하기 위한 스크립트이다.
변경된 CFBundleVersion 값 적용을 위해 Build Phases 순서가 소스컴파일 이전에 와야 한다.
아래 스크립트는 Tuist에서 사용한 스크립트 문자열로 앱버전을 위해 appVersion
변수를 참조하고 있지만
주석처리된 코드를 사용해 현재 Info.list에 정의된 앱 버전 값(CFBundleShortVersionString
)을 참조 할 수도 있다.
값 형식은 앞 3개의 숫자(Major.Minor.Patch)는 CFBundleShortVersionString
와 일치 시키고 뒤에 epoch 를 붙인다
epoch 대신 yyyyMMdd.HHmm 로 바꾸자 >
채팅 입력창 같은 경우 사용자가 입력한 메시지의 라인 수에 따라 채팅창 높이가 동적으로 변경되는 UI를 흔히 볼 수 있다. 메시지 입력 시 높이 조절과 스크롤이 이상하게되는 문제를 해결하다 발견한 내용을 짧게 남긴다.
레거시 코드는 UITextView.contentSize.height
를 텍스트높이로 사용하고 있었는데 텍스트가 여러줄이 되면서 정확한 값을 주지 않고 있었다. 검색해보니 iOS 7 이전에 사용하던 방식이라네.
그래서 -[NSLayoutManager usedRectForTextContainer:]
요놈을 사용하려고 했는데 값을 잘 주는가 싶더니 라인개행이 될 때 마다 한번씩 더 작은 값을 던져줘서 사용 포기, 왜 이러는거지? 어쩔 수 없이 역시나 -[NSAttributedString boundingRectWithSize:options:context:]
를 사용해야지.
채팅창을 최대 3줄로 만든다고 하면 대충 이런 식
func textViewDidChange(_ textView: UITextView) {
참여한 프로젝트에서 사진첩으로 YPImagePicker를 사용하고 있었는데 iOS 14에 추가된 '사진 선택'권한 관련한 기능추가 후 테스트를 하다 만난 YPImagePicker 버그들을 간단히 정리해본다.
이슈는 크게 '사진 선택' 권한으로 사진첩 사용 중 권한사진을 추가/삭제 할 경우 오동작과, 인덱스 기반의 선택항목 관리로 인한 오동작 2가지이다.
대충 겪은 이슈들은
plist에 포함된 key값들이 Privacy Violation: iOS Property List
카테고리로 취약점검사에 포함될 수 있다.
하지만 해당 키값이 취약점 검사대상이 아닐 수 있다. 아래 몇개 사항을 보자.
GoogleService-Info.plist
의 API_KEY
API_KEY
는 취약점 검사대상이 아니다.
https://firebase.google.com/docs/projects/api-keys#api-keys-for-firebase-are-different > ```