> For the complete documentation index, see [llms.txt](https://developer.magtek.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios.md).

# iOS

### Universal SDK Documentation (iOS)

The MagTek Universal SDK for iOS gives iPhone and iPad apps one Objective-C/Swift interface to MagTek card readers and PIN pads, across SCRA, PIN pad (PPSCRA), and MMS-class devices such as the DynaFlex family. You find or create a device through CoreAPI, drive transactions and PIN, PAN, and signature requests through IDevice, control the display, barcode reader, and NFC through IDeviceControl, and receive card data, transaction status, and ARQC authorization requests through delegate callbacks. Supported transports include External Accessory (iAP2) for DynaFlex II Go, and WebSocket, secure WebSocket, and MQTT for DynaFlex II PED. This section is the API reference for those classes, delegates, data types, and enumerations, with appendices that walk through API usage and the EMV transaction flow.

### In This Section

<table data-header-hidden><thead><tr><th valign="middle"></th><th></th></tr></thead><tbody><tr><td valign="middle"><strong>Reference Section</strong></td><td><strong>Information Available</strong></td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/introduction"><mark style="color:red;"><strong>Introduction</strong></mark></a></td><td>SDK scope and supported device classes, package contents, nomenclature (device, host, user), and host requirements, including the certificates needed for TLS and secure WebSocket connections.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/how-to-set-up-the-sdk"><mark style="color:red;"><strong>How to Set Up the SDK</strong></mark></a></td><td>Steps to download the SDK package, add the library to your project, and build and run the MTUSDKDemo sample app.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/coreapi"><mark style="color:red;"><strong>Core API</strong></mark></a></td><td>Static entry points for finding and creating devices (getDeviceList, createDevice, and device-specific factory functions), API version lookup, and MQTT broker, topic, QoS, client ID, and certificate settings for network-connected devices.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/idevice-payment-functions"><mark style="color:red;"><strong>IDevice (Payment Functions)</strong></mark></a></td><td>The primary device object. Start and cancel transactions; request PIN, PAN, signature, and user selections; send the processor’s ARPC with sendAuthorization; send Mifare Classic, DESFire, and Plus NFC tag commands; get the device’s capability, control, configuration, and connection objects; and subscribe to device events.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/devicecapabilities"><mark style="color:red;"><strong>IDeviceCapabilities</strong></mark></a></td><td>Read-only properties for checking hardware support before you call a feature: display, PIN pad, signature capture, battery-backed clock, MSR power saver, SRED, and the bitmask of supported payment methods.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/idevicecontrol"><mark style="color:red;"><strong>IDeviceControl</strong></mark></a></td><td>Direct device control: open and close the connection, reset the device, send raw, extended, and synchronous commands, show messages, images, and QR codes, run the barcode reader, NFC pass-through, and NFC card emulation, set the card latch and LEDs, capture personal info entry, and manage External Accessory discovery and notifications.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/connectioninfo"><mark style="color:red;"><strong>ConnectionInfo</strong></mark></a></td><td>.Connection parameters for a device: device type, connection type, the address format for each transport (IP, TLS, Bluetooth LE, WebSocket, serial), and certificate information for TLS and secure WebSocket connections.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/deviceinformation"><mark style="color:red;"><strong>DeviceInformation</strong></mark></a></td><td>Device identity properties (model, name, and serial number) and the initializer for a DeviceInfo object.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/ideviceconfiguration"><mark style="color:red;"><strong>iDeviceConfiguration</strong></mark></a></td><td>Configuration and maintenance: read and write device settings by OID, retrieve device info, key info, and challenge tokens, send and retrieve files and images, set the idle-screen image, update keys, and update main, wireless, and Bluetooth LE firmware. Asynchronous operations report through IConfigurationCallback.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/configurationinfo"><mark style="color:red;"><strong>ConfigurationInfo</strong></mark></a></td><td>The object for building OID-based configuration requests: configuration type (device settings or device information), the OID-and-value payload, and initializers that build it from an ASN.1 OID path.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/data-classes"><mark style="color:red;"><strong>Data Classes</strong></mark></a></td><td>Objects passed to and returned from the API: IData (string or byte payload), IResult, ITransaction (amount, currency, payment methods, QuickChip, tip, and Apple VAS settings), CertificateInfo, and parsers for barcode, NFC, R-APDU, and personal info entry data.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/ieventsubscriber-delegate"><mark style="color:red;"><strong>IEventSubscriber Delegates</strong></mark></a></td><td>The OnEvent callback, which delivers nearly all device output (card data, transaction status, ARQC requests, PIN blocks, NFC and barcode data) after you register with subscribeAll.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/iconfigurationcallback-delegates"><mark style="color:red;"><strong>IConfigurationCallback Delegates</strong></mark></a></td><td>Callbacks for asynchronous configuration operations: OnProgress for percent complete, OnResult for completion status and data, and OnCalculateMAC for requests that must carry a MAC.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/mtusdkdelegate-delegate"><mark style="color:red;"><strong>MTUSDKDelegate Delegates</strong></mark></a></td><td>iOS host-level callbacks: onDeviceList returns devices found through Bluetooth LE and External Accessory discovery, and didSystemUpdateState reports changes in Bluetooth, network, and server connectivity.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/enumerations"><mark style="color:red;"><strong>Enumerations</strong></mark></a></td><td>Enumerated values used across the SDK: device and connection types, connection and transaction states, event types, payment methods, status codes, NFC events and modes, info types, system states, and Apple VAS modes.</td></tr><tr><td valign="middle"><a href="https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios/appendices"><mark style="color:red;"><strong>Appendices</strong></mark></a></td><td>Worked examples: an API walkthrough with sample code for the main interfaces, and a step-by-step EMV transaction flow.</td></tr></tbody></table>

### Need More Help

{% hint style="info" %}
**Need Help?**

For additional support, please contact MagTek Support:

**Technical Support:**

* 📧 **Email:** [support@magtek.com](mailto:support@magtek.com?subject=Support%20Request)
* 📞 **Phone:** 1-562-546-6800 (US)
* 🕐 **Hours:** Monday-Friday, 5:30 AM - 5:00 PM PST

**Online Resources:**

* 🌐 **Support Portal:** developer.magtek.com

**Documentation Feedback:**

Help us improve this documentation! [feedback@magtek.com](mailto:feedback@magtek.com?subject=Feedback)
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://developer.magtek.com/sdks-and-tools/universal-sdk-documentation/ios.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
