Back to guides

iOS vs Android NFC: What Each Platform Can Really Do

Android has offered open NFC reader/writer and card-emulation access to third-party apps since 2013. iOS caught up on reading and writing tags by 2019, but keeps card emulation closed except for a narrow 2024 EEA carve-out. Here's what that actually means for what you can build and use today.

Published

What it is

Android gives third-party developers more room to work with NFC than iOS does. Reading and writing tags, plus Host Card Emulation — letting any app act as a contactless card — have both been open on Android since 2013. iOS closed most of the reading and writing gap by 2019 with Core NFC. Card emulation is a different story: it's still locked to Apple Pay and Wallet for almost everyone, aside from a narrow carve-out Apple opened in 2024 for EU-based developers. That's the split that actually matters if you're deciding what's possible to build or use on each platform — reader/writer is close to parity, card emulation isn't.

How it actually works

Reader/writer. Core NFC supports NDEF plus raw ISO7816, ISO15693, FeliCa, and MIFARE tag communication. Reading arrived with iOS 11 in 2017; writing followed with iOS 13 in 2019. Android's reader/writer APIs, by contrast, have been open to any app since Android 4.4 in 2013 — no staged rollout, no waiting for later versions. Today both platforms read and write the same tag types. iOS just got there six years later.

Card emulation. Host Card Emulation lets an Android 4.4+ app emulate a payment, loyalty, transit, or access card with no secure element required — the app extends HostApduService and registers Application IDs to route transactions. NFC-A support is mandatory, NFC-B is optional, and NFC-F (FeliCa) isn't supported by HCE at all — even though Core NFC can read a FeliCa tag directly. On iOS, third-party HCE access has only existed since iOS 17.4, and only for developers with an EEA-based, org-level Apple Developer account building for users physically inside the EEA. Add PCI DSS, EMVCo, and GDPR compliance commitments plus an explicit entitlement request, and you can see why this isn't a path most developers take. Outside that carve-out, building a card-emulation app on iPhone simply isn't possible.

Where you'll see it

On Android, HCE underpins loyalty, transit, and access-control apps built directly by third-party developers — the same openness carries over to tag automation. See automating NFC tags on Android with Tasker for a concrete example. On iPhone, Tap to Pay on iPhone runs on Apple's own payment stack rather than the open third-party HCE path. Different feature, different rules. Background tag reading shows the same divide in miniature: iPhone XS and later can read an NDEF tag in the background only if it carries a routable URI. That's why background tag reading needs a universal link on iOS. Android's dispatch model doesn't carry that restriction.

Tips, gotchas, and a quick how-to with NFCore

Reading and writing tags is at parity — NFCore reads and writes NDEF, ISO7816, ISO15693, FeliCa, and MIFARE tags the same way on iPhone and Android. What isn't at parity is building your own card-emulation app. That's a platform entitlement question no consumer app, including NFCore, can change. If a tag behaves differently between your iPhone and your Android phone, start by checking the tag type and NDEF content in NFCore's Read tab. Most "platform bugs" turn out to be a background-reading limitation like the one above, not a broken tag. Grab NFCore on the App Store or Google Play to read and write tags on whichever device you're holding.

Frequently Asked Questions

Can I build a card-emulation app on iPhone?

Only if you're an EEA-based developer with an org-level Apple Developer account and Apple's HCE entitlement, targeting iPhone XS or later on iOS 17.4+. Outside the EEA, Apple keeps card emulation locked to Apple Pay and Wallet.

Does Android support every NFC tag type in HCE?

No. Android's Host Card Emulation supports NFC-A (mandatory) and NFC-B (optional), but not NFC-F — so it can't emulate FeliCa-based cards. Reading a FeliCa tag directly is still possible outside HCE.

Why can't NFCore read tags in the background on my iPhone the way it does on Android?

Apple limits background tag reading to iPhone XS and later, and only for NDEF messages carrying a routable URI record. Android apps can register persistent tag dispatch with far fewer restrictions.

Which platform is better for building NFC-powered apps?

Android gives third-party developers more open access — reader/writer and card emulation have both been open since 2013. iOS closed the reading (2017) and writing (2019) gap, but general card emulation is still closed outside the narrow EEA carve-out added in 2024.

Conclusion

Android's NFC stack has been open to third-party developers for longer, on both reading/writing and card emulation. iOS closed most of the reader/writer gap by 2019, but card emulation stays locked outside a narrow, EEA-only exception Apple added in 2024. For everyday reading and writing — the part of NFC's three operating modes both platforms share — the two phones behave almost identically today. Build something that emulates a card, though, and the platforms still diverge sharply. Worth checking before you commit to a feature on either one.