Notice
Recent Posts
Recent Comments
Link
투케이2K
101. (ios/swift) 전화번호 주소록 데이터 저장 수행 실시 - CNContactStore 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[방법 설명]
[소스 코드]
// MARK: [전화번호 주소록에 데이터 저장 메소드]
let store = CNContactStore() // 전화번호 주소록 접근 객체
func saveAddress(){
print("")
print("===============================")
print("[ViewController >> saveAddress() :: 전화번호 주소록에 데이터 저장 실시]")
print("===============================")
print("")
// [퍼미션 권한 확인]
self.store.requestAccess(for: .contacts) { (granted, error) in
guard granted // MARK: [권한이 부여된 경우]
else { // MARK: [권한이 부여되지 않은 경우]
print("")
print("===============================")
print("[ViewController >> saveAddress() :: 전화번호 주소록 접근 권한 비활성 상태]")
print("===============================")
print("")
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
let alert = UIAlertController(title: "알림", message: "전화번호부 접근 권한을 허용해주세요.", preferredStyle: .alert)
let okBtn = UIAlertAction(title: "확인", style: .default) { (action) in
alert.dismiss(animated: true, completion: nil)
// [사용자 앱 설정창 이동 수행 실시]
let settingsURL = NSURL(string: UIApplication.openSettingsURLString)! as URL
UIApplication.shared.open(settingsURL, options: [:], completionHandler: nil)
}
let noBtn = UIAlertAction(title: "취소", style: .cancel) { (action) in
// [팝업창 닫기]
alert.dismiss(animated: true, completion: nil)
}
alert.addAction(okBtn)
alert.addAction(noBtn)
self.present(alert, animated: true, completion: nil)
}
return
}
print("")
print("===============================")
print("[ViewController >> saveAddress() :: 전화번호 주소록 접근 권한 활성 상태]")
print("===============================")
print("")
// [저장할 사용사 정보 매핑 실시]
let contact:CNMutableContact = self.getUserContact()
// [전화번호 저장 요청 객체 생성 실시 및 주소록에 추가]
let request = CNSaveRequest()
request.add(contact, toContainerWithIdentifier:nil)
// [저장 수행 실시]
try! self.store.execute(request)
// [저장된 정보 확인]
let name = contact.familyName + contact.givenName // [이름]
let phone = contact.phoneNumbers[0].value.value(forKey: "digits") ?? "" // [전화번호]
let email = contact.emailAddresses[0].value ?? "" // [이메일]
print("")
print("===============================")
print("[ViewController >> saveAddress() :: 전화번호 주소록 데이터 저장 완료]")
print("name :: ", name)
print("phone :: ", phone)
print("email :: ", email)
print("===============================")
print("")
}
}
// [저장하려는 사용자 정보 매핑 수행]
func getUserContact() -> CNMutableContact {
// [주소록 객체 생성 실시]
let contact = CNMutableContact()
// [이름 지정 실시]
contact.familyName = "라"
contact.givenName = "길동"
// [전화 번호 지정 실시]
let phone = CNLabeledValue(label:CNLabelPhoneNumberMobile,
value:CNPhoneNumber(stringValue:"010-1234-5678"))
contact.phoneNumbers = [phone]
// [이메일 지정 실시]
let email: NSString = "ra@test.com"
contact.emailAddresses = [CNLabeledValue(label:CNLabelWork, value:email)]
// [매핑된 정보 리턴 실시]
return contact
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
103. (ios/swift) release ipa 파일 툴 사용해 앱 스토어 마켓 등록 방법 - Transporter (트랜스포터) (0) | 2022.01.21 |
---|---|
102. (ios/swift) [재등록] 외부 앱 설치 확인 및 마켓 이동 실시 - openURL , canOpenURL (0) | 2022.01.21 |
100. (ios/swift) 전화번호 주소록 데이터 읽기 수행 실시 - CNContactStore (0) | 2022.01.16 |
99. (ios/swift) 웹뷰 (wkwebview) 캐시 초기화 방법 (0) | 2022.01.11 |
98. (ios/swift) 빌드 타겟 , 버전 변경 및 AppDelegate , SceneDelegate 분기 처리 실시 (0) | 2022.01.09 |
Comments