The Persona Inquiry flow lets you securely and seamlessly collect your user’s information.
Integrate the Persona Inquiry flow directly into your iOS app with our native SDK.
To integrate the Persona Inquiry SDK in your iOS app you can use Swift Package Manager, CocoaPods, or download the XCFramework for manual integration or for use with Carthage.
To install the SDK with Swift Package Manager:
+ to add a packagehttps://github.com/persona-id/inquiry-ios-2.git, and click NextTo install the SDK with CocoaPods, add PersonaInquirySDK2 as one of your target dependencies in your Podfile:
Please be sure to run pod update and use pod install —repo-update to ensure you have the most recent version of the SDK installed.
The SDK is released as an XCFramework which makes manually installing the SDK a straightforward process:
Assets triangle and download the PersonaSDK.xcframework.zip filePersona2.xcframework folder into your Xcode projectDestination has Copy items if neededticked and that it will be added to the correct target.FinishThe SDK requires a minimum deployment target of iOS 13.0 or later. Ensure your app’s minimum deployment is at least 13.0.
In addition to importing the dependency, you also need to modify your Info.plist and add the required permissions:
Info tabNSCameraUsageDescription) entry (if not already present) to enable camera access.NSLocationWhenInUseUsageDescription) entry (if not already present) to enable GPS access. Unfortunately, Apple does not provide tools to differentiate when the API is in use. Therefore, even if your app or inquiry flow does not utilize the GPS functionality, the usage string must be included because the Persona SDK supports the functionality.NSBluetoothAlwaysUsageDescription) entry (if not already present) to enable bluetooth scanning. Unfortunately, Apple does not provide tools to differentiate when the API is in use. Therefore, even if your app or inquiry flow does not utilize the bluetooth functionality, the usage string must be included because the Persona SDK supports the functionality.NSMicrophoneUsageDescription) entry (if not already present) to enable microphone access.NFCReaderUsageDescription) entry (if not already present) to enable NFC access.This SDK collects a user’s IDFV for fraud prevention purposes. In App Store Connect > Your App > App Privacy, if you haven’t already add in a “Device Identifier,” and fill out the questionnaire with the following answers:
Be sure to also update your privacy manifest according to the features you are making use of from the SDK. See our iOS Privacy Manifest instructions for more information.
SDK callbacks are intended for coordination between your app’s UI and Persona’s UI (e.g. opening and closing the flow UI). They do NOT guarantee that data are up-to-date, and cannot be reliably used to guarantee data integrity. Webhooks should be used for logic that depends on Inquiry state.
For more information, see Accessing Inquiry status and data.
In order to receive the inquiry result, please implement the InquiryDelegate protocol. For example:
The Persona Inquiry can be created with the InquiryTemplateBuilder or InquiryBuilder. Begin by calling Inquiry.from(templateId:,delegate:) or Inquiry.from(inquiryId:,delegate:)
Please refer to the code sample below and replace itmpl_EXAMPLE with your template ID. You can find your Inquiry Template ID in the Persona Dashboard.
This starts the Inquiry flow and takes control of the user interface. Once the flow completes the control of the user interface is returned to the app and the appropriate delegate method will be called.
Please refer to Creating inquiries for more information. After getting up and running consider moving inquiry creation to your backend for security reasons.
To make it easier to find Inquiries in the Persona Dashboard, we recommend passing in your system’s user ID for the Inquiry reference ID.
If you want to add extra information to the Inquiry before the user even starts, you can pass them in as fields.
When you create an Inquiry on the server, you can pass the Inquiry ID instead of the Template ID.
If the Inquiry has already started, you will need to also pass in the session token.
Our SDK will automatically use the language and region selected on a users device to determine localization. If your app has specific localization requirements independent of user’s device settings, you can pass the localization directly to the InquiryBuilder as follows:
In rare cases, the Persona Inquiry SDK may encounter client side errors that can not be resolved. When unrecoverable errors are encountered, the sdk will immediately callback to the main application with a debug description of the error.
The most common reasons the Persona Inquiry SDK will error include unrecoverable networking errors, misconfigured templates (should only be encountered during development), or failing to establish a connection to the device camera.
The error callback is located on the InquiryDelegate with the following signature: func inquiryError(_ error: Error).
Make the Persona Inquiry flow look and feel like your app.
You can configure the styles that are applied to the inquiry template in the Persona Dashboard. For more information on using the theme editor, see our help article.
By default, the iOS SDK only has access to the device’s system font. Non system fonts can either be downloaded at runtime when uploaded to your inquiry template, or bundled into your hosting application.
Custom fonts that are not available in Persona themes are only available to customers on Enterprise plans.
Bundling a font
For example, if you choose the font ‘Rubik’ in your template’s Theme configuration, you will need to add a font file named Rubik.ttf (or any compatible format) to your project by following the instructions here.
If you need to use different font weights for a given family, name each font file such that the weight is appended to the end of the family name with a -. For example, a bold version of the Rubik font would be named Rubik-Bold.ttf. Valid font weight suffixes are Light, Regular, Medium, Bold, and ExtraBold.
In order to use a template that includes Government Id NFC reading capabilities on iOS, follow these steps:
TAG and PACE for the Near Field Communication Tag Reader Session Formats :
Privacy - NFC Scan Usage Description to your info.plist file, along with a description.ISO7816 application identifiers for NFC Tag Reader Session to your info.plist file with these values in the following order: A0000002471001, A0000002472001, and 00000000000000.PersonaNfcAdapter() into the Inquiry builder for the .nfcAdapter function. You will need to import PersonaNfc to access this.In order to enable video recording over WebRTC on iOS follow these steps:
PersonaWebRtcAdapter() into the Inquiry builder for the .webRtcAdapter function. You will need to import PersonaWebRtc to access this.Privacy - Microphone Usage Description to your Info.plist file.In order to enable local video recording upload on iOS follow these steps:
Privacy - Microphone Usage Description to your Info.plist file.In order to use a template that includes phone number silent network authentication on iOS, follow these steps:
PersonaSnaAdapter() into the Inquiry builder for the .snaAdapter function. You will need to import PersonaSna to access this.The Persona iOS SDK is shipped with the licenses for the 3rd party software that it uses. Be sure to include these licenses in your app as well. See here for a list of the 3rd party software that we use and their associated licenses.