소프트웨어개발/iOS, macOS 와 Xcode

[iOS] 아이폰 NFC 읽기 테스트 방법

날개 2019. 3. 5. 23:18

2017년 WWDC 에서 애플은 아이폰에서 NFC 를 지원하는 프레임웍을 내놓았습니다.


이름하여, Core NFC ... 이름은 거창(?)하지만... NFC 의 모든 기능을 지원하는 것이 아니라, NDEF 타입1~5의 태그를 읽는 것만 오픈하였습니다.


그래서 Core NFC는 iOS 11부터 지원하며, 기대와는 달리 iOS 12 에서도 읽기만 지원하고 있습니다.


또한 사용할 수 있는 기종은 iPhone 7 을 포함, 이후 출시된 아이폰들만 지원합니다.



그런데, 내가 가지고 있는 아이폰이 NFC 가 제대로 작동하는지 어떻게 테스트해 볼 수 있을까요? NDEF 타입1~5의 NFC Tag 데이터를 가진 NFC 카드가 있다면 간단히 테스트 해 볼 수 있습니다.


다만, 제가 가지고 있는 여러 신용카드들, 출입카드등 어떤것을 사용해도 작동을 하지 않더군요. (일부 카드는 지원한다는 얘기도 있습니다.)


그럴 경우 아이러니 하지만, NFC 기능이 있는 안드로이드 폰이 있으면 약간의 비용(?)과 함께 테스트 환경을 만들 수 있습니다.



그럼 먼저 필요한 준비물을 살펴보죠.


1. iPhone 7 이상.                                                 (이 글에서는 iPhone XR 에서 테스트)

2. iOS 11 이상.                                                     (이 글에서는 iOS 12.1.4 에서 테스트)

3. NFC Read/Write가 지원되는 안드로이드폰       (이 글에서는 삼성 갤럭시S8 에서 테스트)

4. NFC Tools - Pro Edition                                 (안드로이드용, 유료)

5. NFC Tools                                                      (아이폰용, 무료)


여기에 더하여, 실제 Core NFC를 사용한 예제 소스코드를 XCode에서 빌드하여 테스트 해 보고 싶다면, 


https://developer.apple.com/documentation/corenfc/building_an_nfc_tag_reader_app


에서 [Download] 버튼을 누르면 샘플 프로젝트를 다운로드 할 수 있습니다.




그럼 시작해 볼까요?



1. 안드로이드 폰을 NFC 태그로 사용하여 테스트 하기


먼저, 원래 계획대로 안드로이드 폰을 NFC 신호 발생기로 사용하여 테스트를 해 보겠습니다.



(1) 안드로이드폰에 NFC Tools - Pro Edition 설치


먼저, 구글 플레이 스토어에 들어가서 'NFC Tools'를 검색 한 다음, 'NFC Tools - Pro Edition'을 구입하여 설치합니다.


제가 구입할 당시에는 3,959원 이었습니다. 프로 버전을 구입하는 이유는 NFC Emulator 가 프로 버전에만 있기 때문입니다.


물론 다른 NFC 에뮬레이터 앱이 있다면 사용하셔도 됩니다. 단 NFC Tag 가 지원 되어야 합니다.




    




(2) 아이폰에 NFC Tools 설치


이번엔 아이폰 앱스토어로 들어가서 아이폰에 'NFC Tools' 를 설치 합니다.


읽기 기능만 사용할 것이기 때문에 무료버전을 받으면 됩니다. (물론 아이폰은 현재 읽기만 지원합니다.)


또한, 가능한 상황이라면 이 글 윗부분에 남겨둔 링크에서 애플에서 만든 Core NFC 사용 샘플 프로젝트를 다운로드 받아 빌드하여 설치해 볼 수도 있습니다. 아래 화면이 둘다 설치한 화면입니다.





(3) 안드로이드폰에서 NFC Tag 를 만들고, 에뮬레이터 실행하기


이제 안드로이드 폰에서 설치한 'NFC Tools PRO'를 실행합니다.


먼저 'WRITE' 탭을 선택하고, [Add a record]를 누릅니다.



추가할 수 있는 레코드의 종류들이 나오는데, 어떤 것을 선택해도 되지만, 여기서는 [URL / URI] 를 선택해 보겠습니다. 


(아이폰XR 에서 Background Tag Reading 기능을 사용해 보기 위해서는 Background Tag Reading 을 지원하는 데이터 종류를 선택해야 합니다. 실제 사용에서는 필요한 것을 사용하시면 됩니다.)



URL 에 넣고 싶은 URL 을 입력합니다. 입력 했으면, [OK] 를 누릅니다.



아래 화면을 보면, 18바이트의 URL 레코드가 추가 되었음을 알 수 있습니다.


이제 안드로이드 폰을 NFC 기기로 만들기 위해 [More Options] 를 누릅니다.



아래쪽에 [Emulate an NFC tag] 를 누릅니다.



이제 안드로이드폰이 NFC Tag 장치가 된 상태입니다.



[Cancel] 이 눌리지 않게 조심스럽게 아이폰 XR 에 가져다 대 봅니다.



위 화면에서 보다시피 NFC 태그가 읽힌것을 볼 수 있습니다.


단, 위와 같이 아이폰에 NFC 앱이 없이 NFC가 읽히는 것을 백그라운드 태그 리딩 (Background Tag Reading) 이라고 하는데, 이 기능은 iOS 12 에 추가된 기능이며, 현재는 아이폰 XR, XS, XS Max 만 지원이 됩니다. 따라서 아이폰7 ~ 아이폰X 까지는 반응하지 않을 것입니다.


그러면, 어떻게 테스트 하느냐... NFC 앱을 실행시킨 후 스캔 상태에서 안드로이드 폰을 가져다 대면 됩니다.


아래는 애플의 샘플 프로젝트에서 NFC Tag 를 읽는 모습입니다.





잘 읽혔고 하나의 페이로드가 있다고 나오죠? 페이로드를 누르면 아래와 같이 나옵니다.



아직 샘플을 빌드하지 못하였으면, 처음에 앱스토어에서 받아 놓은 'NFC Tools'를 실행하여 읽을 수 있습니다.


아래는 'NFC Tools'에서 NFC Tag 를 읽은 모습입니다.



차근차근 따라해 보면 어렵지 않다는 것을 알 수 있습니다.






2. 공 NFC Card 를 사용하여 NFC 테스트 해 보기 (보너스)


위 방법으로도 충분히 테스트 해 볼 수 있지만, 이번에는 공 NFC Card 를 사용해서 테스트해 보겠습니다.


우선, 이번에는 공 NFC 카드가 있어야 합니다. 저는 예전에 잠깐 유통하려고 구입한 아두이노 킷에 들어 있었지만, 인터넷 검색해보시면 비어 있는 공 NFC 카드, 정확히 말하자면 Writable NFC Card 를 판매 하는 곳들이 있습니다.


아래는 제가 가지고 있는 쓰기 가능한 NFC 카드 입니다.




다시 안드로이드의 'NFC Tools PRO'를 실행하고, 위에서 설명했던 대로 NFC Tag 레코드를 하나 만듭니다.


아래 화면을 보면 18바이트짜리 URL 레코드를 만들었습니다.


이번엔 [More Options] 가 아니라 아래에 있는 [Write / 18 Bytes] 를 누릅니다.



NFC Tag 쓰기 기능이 작동합니다.


메시지에 표시된 대로 쓰기 가능한 NFC 카드를 안드로이드 폰에 가져다 댑니다.



아래 사진과 같이 쓰기 가능한 NFC 카드를 가져다 대면 NFC 데이터가 카드에 저장됩니다.



이제 데이터가 들어 있는 NFC 카드가 만들어 졌습니다.


 처음에 살펴봤던 에뮬레이터 상태였던 안드로이드폰 대신에 이제는 만들어진 카드를 아이폰에서 테스트 해 봅니다.


아래는 아이폰XR 이상에서 지원되는 백그라운드 태그 리딩으로 NFC Tag 를 읽은 모습입니다.



아래 화면과 같이 앱에서도 잘 읽히네요.


위에서도 설명했지만 아이폰7 ~ 아이폰X 는 앱에서만 읽을 수 있습니다.

(어차피 XR 이상에서도 활용하려면 앱에서 읽어야 하기는 합니다만....)







여기까지 아이폰에서 NFC 태그를 읽기 테스트를 하는 방법을 알아보았습니다.


참고로 아이폰에서 읽을 수 없는 NFC 태그와 읽을 수 있는 NFC 태그의 차이를 아래 화면에서 볼 수 있습니다.


한쪽은 아이폰에서 읽을 수 없기 때문에 (아예 반응 자체를 안함) 비교를 위해 둘다 안드로이드에서 읽었습니다.


    


첫번째 화면은 아이폰에서 읽을 수 없는 NFC Tag 입니다. 

두번째 화면은 아이폰에서 읽을 수 있는 NFC Tag 입니다.


차이점이 보이나요? 그렇습니다. NDEF Tag 데이터가 있는지 여부에 따라서 차이가 납니다.


저처럼 해당 데이터도 없는데 아이폰에서 안 읽힌다고 헛고생 하는 일 없으시길 바랍니다.


마지막으로, 애플의 Core NFC 공식 문서 링크 남겨 둡니다.


https://developer.apple.com/documentation/corenfc#topics


끝.


(C) 2019 WingsNote.com (무단 복제 및 게시 금지, 링크 허용)