iOS
Requirements
- iOS 12.0+
- Swift 5.0+
Getting started
Installation
Add the AkilesSDK framework to your iOS project. If you are using CocoaPods, you can add this to your Podfile:
pod 'AkilesSDK', :git => 'https://github.com/akiles/akiles-ios.git', :branch => 'v2.0.0'
Then, import the AkilesSDK
framework:
import AkilesSDK
For Objective-C projects:
#import <AkilesSDK/AkilesSDK.h>
Basic Usage
-
Initialize the SDK:
let akiles = Akiles()
-
Add a session using a token from the Akiles API:
let sessionId = try await akiles.addSession(token: "your-session-token")
-
Discover available gadgets:
let gadgets = try await akiles.getGadgets(sessionID: sessionId)
-
Perform an action on a gadget:
let options = ActionOptions() options.useBluetooth = true options.useInternet = true let callback = MyActionCallback() await akiles.action( sessionID: sessionId, gadgetID: gadgets[0].id, actionID: gadgets[0].actions[0].id, options: options, callback: callback )
Card emulation
Card emulation on iOS uses the Host-based Card Emulation API. The upside is it’s free to use, but it comes with a set of restrictions imposed by Apple (it works in the European Economic Area only, it requires the user to open your app to use it).
We might add support for Apple Wallet in the future. This will allow it to work world-wide, at the cost of paying a per-credential-per-year fee to Apple. Please let us know if this is something you’re interested in.
Setup
- Create an AID for your application
- Go to the Developer Center
- select your application
- go to “Card emulation AIDs”
- Create one
Each AID you create makes NFC reading slightly slower. Do not create unnecessary AIDs. You can use the same AID for Android and iOS, do not create both. The only case where you really need multiple AIDs is when you have multiple Android apps and expect users to have them installed at the same time.
- Fill this form
- Use case: select all that apply to you
- Check all “Implementation and Support Requirements” boxes. (You hereby have a valid and binding agreement with us for whatever just by using this SDK)
- Contactless app default setting: No.
- ISO7816 AID Prefix(es): Enter the AID provided to you by Akiles Support.
- Wait for a response from Apple.
- Add the entitlement to your app as described here, section “Configuring and enabling the entitlement in Xcode”.
Usage
-
Initialize the SDK:
let akiles = Akiles()
-
Add a session using a token from the Akiles API:
let sessionId = try await akiles.addSession(token: "your-session-token")
-
Start the card emulation:
try await akiles.startCardEmulation(language: "en")
Submit your app for review
We’ve found the App Store review can be slow/finicky when you use the HCE entitlement. Here’s some tips to deal with it:
- In the reviewer notes, explicitly state that HCE is used not for payment, but for access control systems only.
- Make sure to follow all steps detailed here.
- If time is a concern for you, you might want to first launch a version of the app without the HCE entitlement, then do an update that adds it. This way, if review takes a long time you at least have a version without card emulation in production.
Demo app

The repo contains an SDK demo app that showcases all major SDK features:
- Session management: Add/remove member sessions using tokens
- Gadget actions: Open doors and control devices via internet or Bluetooth
- Hardware scanning: Discover nearby Akiles devices via Bluetooth
- Hardware sync: Update device firmware and configuration
- NFC card scanning: Read and update Akiles cards
- Card emulation: Start card emulation.
The app displays real-time status updates for both internet and Bluetooth operations, making it easy to test different scenarios.