The Pinn iOS Framework provides easy, secure and customizable authentication and biometric registration for your iOS application.

The Pinn Framework is prebuilt and ready to be installed in you project. There are 3 frameworks in the Pinn iOS Package:

  • Pinn.framework
  • PinnPalm.framework
  • PalmAPI.framework

The PalmApi frameworks are dependencies of Pinn and need to be included though you won’t need to interact with them.

This guide will guide you in integrating the Pinn frameworks into your project both with regard to project settings and required code.


Your iOS project must have a minimum deployment target of 11.0.



If your project is running swift 3 you must be run Xcode 10.2 or later for compatibility with the Pinn SDK


Currently all downloads are done via private download links. Please contact for access. Once accessed, unzipped content will live in ~/Downloads/Pinn-iOS_v*


  1. Navigate to the folder previously unzipped to ~/Downloads/Pinn-iOS_v*
  2. Open the frameworks folder.
  3. Drag the 3 frameworks there into your project. If you do not already have one, you might consider creating a “Frameworks” Group to hold these and subsequent 3rd party frameworks. When dragging the frameworks in, chose the copy items if needed option and be sure the checkbox is selected in "Add to targets" for your app.
  4. Open your target in the project explorer and under General Settings Embed all 3 frameworks but only link the Pinn and PinnPalm frameworks. Your settings should look like the following:
  5. Disable Bitcode. Pinn doesn't support Bitcode so the corresponding setting needs to be set to No under Build Settings
  6. Set Camera Usage Description in your Info.plist file

Getting an App Publishable Key

In order to configure the SDK in the next step your will need to obtain a publishable_key that represents your iOS application. This key is safe to embed in source code and allows for the Pinn services to identify your application. Using your account's secret key simply call our API with a name and optional description of your application.

For more details look at the API reference documentation on Apps.


Authorization: Bearer sk_UB8hITybDSwMBVSEBGYV8ZqYAaabHS5e

    "name": "My iOS App",
    "description": "An optional description about my app"


    "app_id": "app_1h8hISXxbhwsjN12GZ8vY6Kr",
    "app_type": "ios",
    "created_at": 1547736791,
    "description": "An optional description about my app",
    "name": "My iOS App",
    "object": "app",
    "publishable_key": "pk_1h8hISXxbhwt4AWcp2XCe4pXJhPNPpz9",
    "updated_at": 1547736791

Notice the publishable_key value returning in the JSON response. You may now directly embed this value into your iOS app.

Configure your App Delegate

import Pinn

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Add the Pinn Setup call
    Pinn.setup(publishableKey: publishableKey)
    // Register EnrollmentKey
    Pinn.setEnrollmentKeyProvider(enrollmentKeyProvider: EnrollmentKeyProvider())

In the next guide on enrollment there will be more details on the Enrollment Keys. For now, you may comment out the "Pinn.setEnrollmentKeyProvider" line if you wish to.

Using the Pinn Framework

Your principal interaction point with the Pinn Framwork is via the Pinn.swift file. It is the main gateway to Pinn functionality and all of the examples here utilize the functions listed there.


A note on simulators

The Palm and QR scanning functionality of the Pinn framework require that your application be built against a device. As such the framework will not run on an app compiled for the simulator.

At this point you should be able to build and run your app to confirm you're configured correctly.


First steps with our mobile SDKs is enrolling. See our user guide for more details.



We are here to help! Contact us with any development related questions at and we'll reach back in a timely manner.