[swift] Core NFC 프레임워크를 사용한 NFC 기능 구현 방법

iOS 11부터 지원되는 Core NFC 프레임워크를 사용하면 iPhone에서 NFC 태그를 스캔하고 정보를 읽거나 쓸 수 있습니다. 이 기능은 개발자가 애플리케이션에 NFC 태그의 정보를 쉽게 통합할 수 있도록 해줍니다. 이번 포스트에서는 Swift를 사용하여 Core NFC 프레임워크를 통해 NFC 기능을 구현하는 방법을 알아보겠습니다.

NFC 기능 지원 설정

먼저 프로젝트에 NFC 기능을 추가하기 위해, Capabilities 탭으로 이동하여 Near Field Communication Tag Reading 옵션을 활성화합니다.

NFC 기능 구현

NFC 스캔을 위해 NFCTagReaderSession을 사용합니다. NFC 태그 스캔을 시작하려면 다음과 같이 NFCTagReaderSession 인스턴스를 생성하고 시작해야 합니다.

import CoreNFC

class MyNFCReaderDelegate: NSObject, NFCTagReaderSessionDelegate {
    func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) {
        // NFC 태그 스캔이 활성화되면 호출됩니다.
    }
    
    func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) {
        // NFC 태그 스캔이 종료되거나 오류가 발생하면 호출됩니다.
    }
    
    func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
        // NFC 태그가 감지되면 호출됩니다. 태그를 읽거나 쓸 수 있습니다.
    }
}

let nfcSession = NFCTagReaderSession(pollingOption: [.iso14443], delegate: MyNFCReaderDelegate(), queue: DispatchQueue(label: "nfcQueue", qos: .default, attributes: [], autoreleaseFrequency: .workItem, target: nil))
nfcSession.begin()

NFC 태그 처리

didDetect 메서드 내에서 NFC 태그를 처리합니다. NFC 태그에는 각기 다른 유형이 있으므로, 태그의 유형에 따라 적절한 처리를 수행해야 합니다.

func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
    for tag in tags {
        switch tag {
        case .iso7816(let iso7816Tag):
            // ISO 7816 타입의 NFC 태그를 처리하는 데에 관한 코드를 작성합니다.
        case .feliCa(let feliCaTag):
            // FeliCa 타입의 NFC 태그를 처리하는 데에 관한 코드를 작성합니다.
        case .miFare(let miFareTag):
            // MiFare 타입의 NFC 태그를 처리하는 데에 관한 코드를 작성합니다.
        @unknown default:
            session.invalidate(errorMessage: "Unknown tag type")
        }
    }
}

NFC 기능 제어

NFC 기능을 스캔한 후에는 NFCTagReaderSession을 종료해야 합니다. 이는 메모리 누수를 방지하고 배터리 소모를 줄이기 위해 중요합니다.

func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
    // NFC 태그 처리를 완료한 후, NFCTagReaderSession을 종료합니다.
    session.invalidate()
}

결론

이제 Core NFC 프레임워크를 사용하여 iPhone에서 NFC 태그를 스캔하고 정보를 읽거나 쓰는 기능을 쉽게 구현할 수 있습니다. Swift를 사용하여 NFC 기능을 구현하는 방법을 간단히 살펴보았습니다.

더 많은 내용을 찾으려면 Apple Developer Documentation를 참고하세요.