How to Read NFC Tags with an iPhone App with iOS 11
Updated Sept 2021: Read the latest article, iPhone 13 – Using NFC and NFC Tags with iOS 15 in 2021
With Apple’s event on Sept. 12th, 2017 Apple has finally announced the new iPhone 8 and the iPhone X along with releasing iOS 11 to the general public for download on Sept. 19th 2017. iOS 11 includes an NFC SDK for iOS, Core NFC which allows for iPhone apps to read NDEF records from NFC tags. Previously the NFC controller in the iPhone had only been used to support Apple Pay. We have written several popular articles on Apple and NFC over the last few years which make for good background reading for this article. The NFC industry has been patiently waiting for Apple to join everyone else in supporting NFC tags since Google added NFC functionality to Android in late 2010. Now that it’s possible to read NFC tags on an iPhone, we explore how NFC works on an iPhone, how NFC is different on iOS than on Android and what this means for consumers and the NFC industry.
For those that are just getting started with NFC, here is a very brief NFC tutorial. All modern smartphones now have an NFC controller in them; similar to Bluetooth, WiFi and GPS controllers. NFC tags are cheap, passive RFID tags that are placed on or embedded into products, packaging, promotional items and many other physical things. NFC tags have a very small amount of memory, that when written to (encoded) carry a bit of data which can be read by an NFC enabled device, such as a phone or desktop NFC device. When the phone comes in very close proximity to the NFC tag (25 mm / 1″), the phone detects the NFC tag and can interact with it. Most often the phone reads the data that was previously encoded onto the NFC tag, although there are several other modes of operation possible. Based on the software running on the device (app), the device often performs an action based on the type of data encoded onto the NFC tag. For example, if the website https://gototags.com is encoded onto an NFC tag via an NDEF website record, a common action that would be performed on a phone would be to open that url in a browser. Thus an NFC tag can be placed on a physical thing to provide a digital experience when the NFC tag is interacted with by a phone.
Apple’s implementation of NFC on iOS is different than Android, which is what most NFC users and developers are used to. Apple has taken a more conservative and app-siloed approach to NFC (for now). We have covered several of the reasons for this conservative approach in our previous blog posts. We expect that over time Apple will smooth out any rough spots in the user experience, which will change or alleviate many of the issues mentioned below. We also expect for Apple to bring some additional innovation to NFC on iOS in subsequent releases.
Here are some important points about NFC on the iPhone:
- Only the iPhone 7, iPhone 8, iPhone X and newer iPhones supports reading NFC tags; the iPhone 6 and earlier does not support reading NFC tags. While the iPhone 6 does have an NFC controller to support Apple Pay, Apple has decided to not allow the iPhone 6 to read NFC tags. There were several hardware changes to the NFC controller from the iPhone 6 to the iPhone 7, including what is likely a signal booster chip. It seems that Apple felt this was required to ensure a quality user experience; or it’s a reason to force people to upgrade. Previous versions of the iPhone (5…) do not have an NFC controller and can not use NFC tags or NFC based mobile payments.
- An app is required to use the NFC SDK on iOS. iOS does not have any native support for reading NFC tags and performing actions on the local device. A 3rd party app must be installed to implement these actions. Android has always handled basic NDEF record types natively, without an app installed. For example, if a NDEF website record is encoded onto an NFC tag, on Android it will automatically open the website in a browser when interacted with while on the home screen; in iOS a 3rd party app must be installed and opened first before an NFC tag can be read. An iPhone NFC App, such as the GoToTags iPhone App is required.
- Only tag reader mode is supported. NFC has several modes of operation; reader/writer, tag emulation and peer-to-peer. On iOS, only the reader/writer mode is supported, and even then only reading is supported.
- Only NDEF encoded NFC tags are able to be read by the iPhone. Unencoded NFC tags are not able to be read. This has implications for developers and hobbyists, although probably doesn’t matter much to consumers who usually just read NFC tags and don’t encode them. NFC tags purchased from Amazon are usually not encoded and will not work on the iPhone until encoded. The GoToTags Store offers an NFC tag encoding service so that the NFC tags will work on the iPhone. The GoToTags NFC Encoder is used by thousands of businesses to encode NFC tags themselves.
- An iPhone NFC app only has access to the NDEF records; apps do not have access to the NFC chip’s UID or other special features in the NFC chip. This is a bit surprising. The UID is the basis for several security and authentication features using NFC. We expect this to be added in the future as there is no reason to not allow NFC apps to read the UID.
- An app must explicitly trigger the process of reading NFC tags. In Android apps can poll for NFC tags in the background and listen to NDEF messages the app was explicitly coded for. In iOS, reading NFC tags is an explicit, user-initiated action that must occur in the foreground.
- iOS does not have the Android concept of an NDEF record type to trigger an app download (AAR record). This isn’t surprising given the other design choices made. When Apple does allow for more open reading of NFC tags, expect to see an equivalent to the AAR on iOS.
- Reading NFC tags on the iPhone is fast and has a good reading range! Whatever they did to the hardware is impressive as it almost instantaneously reads an NFC tag with a website record; much faster than any Android implementation we have seen.
Overall this is a big step forward for the NFC industry, as it had been waiting for support in the iPhone. We expect that in subsequent releases of iOS apple will continue to added NFC functionality.