아이폰 주소록 Contacts 가져오기 swift4

아이폰 주소록 Contacts 가져오기 swift4

 

아이폰 앱 개발 공부 중 핸드폰에 있는 연락처를 가져와서 textField에 설정하는 과정을 진행하고 있는데... 직접 주소록을 열어서 접근할 수 있는 방법이 있는지는 좀 더 공부를 해봐야 알겠지만 일단 지금까지 공부한 내용은 주소록에 있는 이름과 번호를 모두 가져와서 TableView에 뿌려준 후 해당 번호를 선택하면 자동으로 textField에 입력이 되도록 하는 과정까지 마무리를 했다.

 

아이폰 주소록

나쁜 내 머리로 나중에 또 생각이 나지 않을까 싶어 그 과정의 핵심 내용만 이렇게 정리를 해 놓는다. (그냥 제 머리 속에 있는 내용만 정리하는 글이니 혹시 이 글을 보시는 분들이 있다면 참고 부탁드립니다.)

 

 

셀

'테이블뷰'의 Content는 Dynamic Prototypes로 했으며 Prototype Cells는 1로 설정을 했다.


rowcell

그냥 번호나 이름만 출력되면 허전할 듯 싶어서 셀의 스타일은 Right Detail을 선택한 후 오른쪽 Label에 [선택]이라는 text를 넣었다. 그리고 Title에는 번호 없이 이름만 출력하도록 할 것이다. 물론 Title이나 '선택' text가 입력된 부분에 번호를 함께 출력하도록 할 수는 있겠지만 개인적으로 번호까지 출력되면 조금 지저분해 보여서 제외하기로 했으며 이 셀을 tableView에 뿌릴 때 필요한 identifier는 "rowcell"로 설정을 했다.


프라이버시

그리고 아이폰 앱에서 주소록에 접근하기 위해서는 info.plist에서 [Privacy - Contacts Usage Description] 프라이버시 설정을 해야 한다.

 

cnotacts

Controll 스위프트 파일에서는 주소록에 접근하기 위해 Contacts를 import 한 후 CNContactStroe() 객체를 만들어서 view가 열리기 직전에 실행되는 viewWillAppear 메서드에서 주소록에 접근을 시도한 후 성공하면 메시지를 출력하도록 했다.

 

 

데이터 가져오기

다음은 아이폰 주소록에 접근해서 데이터를 가져오기 위한 함수인 fetchContacts() 메서드는 다음과 같이 정의를 했다. 일단 주소록의 '성'과 '이름' 그리고 '번호'에 접근하기 위한 CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey키를 설정한 후 requestAccess로 접근을 시도했을 때 주소록 접근 권한이 있으면 성과 이름, 번호를 가져오도록 했으며 그렇지 않을 때는 메시지를 띄우도록 했다.

 

화면 뿌려주기

테이블뷰의 셀을 반환하는 함수에서는 앞에서 만든 [rowcell]을 가져와서 거기에 있는 Title Label에 contacts에서 가져온 이름을 출력하도록 했다. 주석 처리된 numberLabel은 [선택]이라는 텍스트를 입력하는 게 더 괜찮을 거 같아서 아웃렛 연결을 제거한 후 주석 처리를 해버렸는데 상황에 따라서 번호를 뿌려줄 수도 있을 것이다.

Leave a comment
Your name *
Your PassWord *
Comment *
COMMENT
Prev 1 2 3 4 5 6 7 Next