Installation
1. Add the framework
The SDK is provided as OzoneNFC.xcframework (a universal XCFramework supporting both device and simulator slices). Note: CoreNFC tag reading requires a physical iPhone and cannot be tested in the iOS Simulator; the simulator slice is primarily for building and running non-NFC UI and unit tests.
- Copy
OzoneNFC.xcframeworkinto your project directory. - In Xcode, select your target → General → Frameworks, Libraries, and Embedded Content.
- Drag in
OzoneNFC.xcframeworkand set it to Embed & Sign.
2. Add the OpenSSL dependency
OzoneNFC requires OpenSSL for passport signature verification. Add it via Carthage:
Cartfile:
github "krzyzanowskim/OpenSSL" "3.6.3000"
Then run:
carthage update --platform iOS --use-xcframeworks
Drag the resulting OpenSSL.xcframework from Carthage/Build/ into your target's Frameworks, Libraries, and Embedded Content and set it to Embed & Sign.
Note on the framework's signature. The
OpenSSL.xcframeworkbinary for3.6.3000is signed by Goodnotes Limited (teamC88F57F4TJ), whereas3.1.6000and1.1.2301were signed by Marcin Krzyzanowski (team67RAULRX93). The exact release where this changed has not been established.If Xcode has recorded the old identity for this framework, the build fails with "OpenSSL.xcframework is not signed with the expected identity and may have been compromised." Re-adding the framework updates the recorded identity.
3. Add NFC capabilities
In Xcode, open your target → Signing & Capabilities → + Capability → add Near Field Communication Tag Reading.
TAG is required for eMRTD passport reading. NDEF is optional — only add it if your app also needs to read NDEF-formatted tags (e.g. NFC stickers, business cards):
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>TAG</string>
<!-- Add NDEF only if your app reads NDEF-formatted tags -->
<!-- <string>NDEF</string> -->
</array>
See Apple — How to add a capability and Apple — NFC required capabilities for more details.
4. Update Info.plist
Two entries are required:
NFC usage description (shown in the system permission prompt):
<key>NFCReaderUsageDescription</key>
<string>Required to scan your document through NFC.</string>
ISO 7816 application identifier for eMRTD passports — this is the globally standardised Application Identifier (AID) for the Logical Data Structure 1 (LDS1) application, defined in ICAO Doc 9303 Part 10, Section 3.6.1:
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>A0000002471001</string>
</array>
5. Import the module
import OzoneNFC
Updating
Download the new OzoneNFC.xcframework and replace the existing one in your project. Review the release notes for any API changes before updating.