[swift] 연락처(Contacts) 앱에 생일 및 기념일 관리 기능 추가하는 방법

iOS의 연락처(Contacts) 앱은 기본적으로 연락처 정보를 관리하는데 사용됩니다. 그러나 연락처 앱에는 생일이나 기념일과 같은 추가 정보를 저장하고 표시하는 기능이 내장되어 있지 않습니다. 이 기능을 추가하고 싶은데, 어떻게 해야 할까요? 이를 위해 iOS의 연락처 프레임워크 및 이를 이용한 Swift 언어의 사용이 필요합니다.

생일 및 기념일 정보 추가 방법

연락처에 생일 및 기념일 정보를 추가하려면 다음 단계를 따를 수 있습니다.

1. 연락처에 생일 및 기념일 정보 저장

첫째로, 연락처를 나타내는 CNContact 객체를 가져온 후, 이를 수정하여 생일 및 기념일 정보를 추가합니다.

import Contacts

// 연락처 객체 가져오기
let contactStore = CNContactStore()
let contacts = try contactStore.unifiedContacts(matching: CNContact.predicateForContacts(matchingName: "홍길동"), keysToFetch: [])

if let contact = contacts.first {
    let birthday = DateComponents(year: 1990, month: 1, day: 1) // 생일 정보 생성
    let birthdayDate = Calendar.current.date(from: birthday)

    let newContact = contact.mutableCopy() as! CNMutableContact
    newContact.birthday = birthdayDate // 생일 정보 설정

    let anniversaryDate = DateComponents(year: 2010, month: 5, day: 10) // 기념일 정보 생성
    let anniversary = Calendar.current.date(from: anniversaryDate)
    newContact.dates.append(CNLabeledValue<NSDate>(label: "Anniversary", value: anniversary as NSDate?)) // 기념일 정보 설정

    let saveRequest = CNSaveRequest()
    saveRequest.update(newContact)
    
    try contactStore.execute(saveRequest)
}

2. 생일 및 기념일 정보 표시

위 코드를 사용하여 연락처에 생일 및 기념일 정보를 추가한 후, 이를 표시하려면 CNContactViewController를 사용하여 연락처 정보를 편집하는 방법과 유사합니다. 사용자가 특정 연락처를 선택하면 CNContactViewController가 해당 연락처의 정보를 표시하고, 여기서 생일 및 기념일 정보도 함께 표시됩니다.

이렇게 하면 기본 연락처 앱에 생일 및 기념일 관리 기능을 추가할 수 있습니다.

마치며

위와 같이 Swift 언어를 사용하여 iOS 연락처 앱에 생일 및 기념일 정보를 추가하고 표시하는 방법에 대해 알아보았습니다. 연락처 앱은 개인 및 비즈니스 관계에 있어서 중요한 역할을 하므로, 보다 다양한 정보를 효율적으로 추가하고 표시할 수 있는 기능을 제공하는 것이 유용할 수 있습니다.

참고: Apple Developer Documentation - Contacts Framework