-
Contact Framework 사용하여 연락처 불러오기개발/Swift 2024. 9. 3. 15:05
연락처를 불러 오기 위해서는 연락처 권한이 필수임
CNContactStore().requestAccess(for: .contacts) { isGranted, _ in }
연락처 권한 허용 여부는 이후로 이렇게 확인 가능
CNContactStore.authorizationStatus(for: .contacts) == .authorized
권한 허용 이후에는 contact 를 통해 연락처에 접근 가능함
static private func getNewContacts() async -> [String: String] { let contactStore = CNContactStore() guard (try? await contactStore.requestAccess(for: .contacts)) == true else { return [:] } let keys = [ CNContactFormatter.descriptorForRequiredKeys(for: .fullName), CNContactPhoneNumbersKey ] as? [CNKeyDescriptor] ?? [] //연락처와 full name 만 필요함 let request: CNContactFetchRequest = CNContactFetchRequest(keysToFetch: keys) request.sortOrder = CNContactSortOrder.userDefault var newContacts: [String: String] = [:] try? contactStore.enumerateContacts(with: request, usingBlock: { (contact, _) in if contact.phoneNumbers.isEmpty { return } let phoneNumber = contact.phoneNumbers[0].value.stringValue.verifiedPhoneNumberString() // 폰 번호 받아옴 let phoneValidation = NSPredicate(format: "SELF MATCHES %@", Config.RegularExpression.PHONE_KOREA) //유효성 검사 진행 if phoneValidation.evaluate(with: phoneNumber) { let fullName = contact.familyName + contact.givenName newContacts[phoneNumber] = fullName } }) return newContacts }
'개발 > Swift' 카테고리의 다른 글
Tuist활용하여 멀티 모듈 SwiftUI 프로젝트 생성하기 (0) 2024.10.15 Label Attribute 이미지 처리, 줄넘김 하기 (0) 2024.09.12 Compositional Layout+ Diffable Datasource 활용 가이드 (0) 2024.08.27 [Error] suspend resume partial function for XXX (0) 2024.08.20 [Error] navigationbar subview 레이아웃 에러 (0) 2024.08.20