eSignLive iOS SDK: Version 4.1

The eSignLive iOS SDK is a feature that enables users to run e-signature processes from mobile devices that use iOS 10 and higher.

This SDK employs a server-client model, with a eSignLive product as "server" and a company's mobile application as "client". The server can be either a SaaS product (e.g., eSignLive Professional) or an on-premises product (e.g., eSignLive).

Because of this server-client model, this feature won't work until both of the following have been configured:

For any issues see Troubleshooting

NOTE: Strictly speaking, the eSignLive iOS SDK is only on the client side. The role of the server side is to provide support for the eSignLive iOS SDK.

Download the eSignLive iOS SDK.

TIP: To view Release Notes for the eSignLive iOS SDK, click eSignLive iOS SDK: Release Notes.

Server-Side Software

Signing on mobile devices via the eSignLive iOS SDK will not work unless supporting server-side software has been provided. That server-side software becomes available as soon as you create your SaaS account.

Client-Side Software

This section discusses:

Client-Side Packaging

Each release of the eSignLive iOS SDK has an eSignLiveSDK_iOS directory, which in turn has the following main sub-directories:

  1. Sample: Contains a sample project that provides a detailed demonstration of the following SDK functionalities:
    • Login (with email and password)

    • Start/Edit Transaction
    • Prepare New Transaction

  1. Frameworks: Contains the following sub-folders:
    • Debug-universal: Contains a Debug Framework for the following architectures: arm7, arm7s, arm64, i386 and x86_64 (for both Device and Simulator)

    • Release-iphoneos: Contains a Release Framework for the following ARM architectures: arm7, arm7s, and arm64
  1. SDKAssets: Contains the following sub-folders:
    • Fonts: Contains the font files to be added to the project target and to the file info.plist.

    • Images: Contains SDK-used images in an asset file. Any image can be replaced by another if it has the same name and resolution.
    • UIElements: Contains storyboard files and NIB files, both of which are used to build a User Interface. These files can be edited as needed.
    • NOTE: The above SDK Assets are not compiled with the SDK, but are linked via the end-developer application. End-developers may customize these assets to suit their needs.

Integrating the eSignLive iOS SDK

This section discusses:

NOTE: The Sample project has already been integrated with the Debug Framework. Please integrate the Release Framework before submitting your application to the App Store.

Integrating the eSignLive iOS SDK Framework into an Existing Project

  1. Open your project in Xcode, and select it from the Project Navigator.
  2. Select the appropriate target from the TARGETS panel, and click the General tab.
  3. Scroll down to Embedded Binaries.

  4. Drag and drop the Framework file called eSignLiveSDK.framework into Embedded Binaries.

  5. In the dialog box that appears, select Copy items if needed.

  6. Click Finish.
  7. The Framework file eSignLiveSDK.framework will be added to:

    • Embedded Binaries
    • Linked Frameworks and Libraries
    • Project Navigator
  8. Click the Build Settings tab, and set Always Embed Swift Standard Libraries = YES.

  9. In the previous version of Xcode, this flag was called EMBEDDED_CONTENT_CONTAINS_SWIFT.
  10. Drag the SDKAssets folder from the eSignLiveSDK_iOS directory, and drop it into the Project Navigator.
  11. In the dialog box that appears, select Copy items if needed and Add to targets.
  12. Click Finish.
  13. To properly configure the file info.plist:
    1. Open the file info.plist.
    2. If it is not already there, add the property Fonts provided by application. This property is called UIAppFonts in raw format.
    3. Add an item for each font you want to support.
    4. Add the following font values: Ubuntu-Bold.ttf, Ubuntu-Italic.ttf, Ubuntu-Regular.ttf, Ubuntu-Light.ttf.
    5. If it is not already there, add the property Privacy - Contacts Usage Description., and type a description of how the application will use its Contacts data. This property is called NSContactsUsageDescription in raw format.
    6. Save and close the file info.plist.
  1. Ensure that the "code signing" properties are configured correctly.
  2. Clean, build and run your project.
  3. There should be no Compiler or Linker errors at this stage.

Non-Native iOS Applications

Non-native applications (built over third-party implementations) can integrate the eSignLive Mobile SDK into their application. However, hooks to the SDK must be added through delegate Callbacks of UIWebview or UIWebKit. A navigation controller reference must be provided for push stack.

Using Interfaces

The Headers sub-directory of eSignLiveSDK.framework includes the following interfaces:

  • eSignLiveSDK.h — The umbrella header
  • eSignLive.h — Most integration work involves this interface.
  • ESTransaction.h — A representation of a Transaction interface object
  • ESDocument.h — A representation of a Document interface object
  • ESFormfield.h — A representation of a Form Field interface object
  • ESSigner.h — A representation of a Signer interface object

Detailed documentation of each interface is in the file that bears its name.

To see how these interfaces are used:

  1. Go to the Sample project provided by eSignLive.
  2. Open the file ViewController.m, which contains code snippets for the most important SDK features.
  3. Explore those code snippets, as well as the following Code Examples.

Code Examples

This section contains code examples for the following topics:

Initial Configuration

To set up the SDK:

  1. Set up the delegate as follows:
  2. NOTE: The <self> here should be a View Controller that is part of a Navigation Controller Stack. The SDK View Controller will be pushed over this View Controller. The delegate acts as a platform to which Callbacks can be sent. The rootViewController acts as a hook to load the User Interface.

  3. Set up the server address as follows:
  4. If package creation must be performed via a User Interface, use the following code:
  5. If you want to hide the Navigation Bar, use the following code:

Login

Signup

NOTE: The above password must satisfy certain requirements. End-developers should ensure that they are met.

Loading a Transaction from the Server

If a transaction already exists on the server, an iOS device can fetch it and begin signing its documents. To do so, use the following code:

You can receive feedback about events regarding the transaction by implementing certain delegate functions (see the Sample project).

Creating/Preparing a Transaction

The following code loads a User Interface on the iOS device for Transaction Preparation:

NOTE: To listen to the Callbacks, end-developers must implement the createTransaction delegate.

Creating a Transaction and Starting to Sign

A transaction can be programmatically created or edited offline. For those purposes, end-developers should use the ESTransaction interface. The transaction's documents can even be signed offline. In any case, the entire offline process will later be synchronized to the server.

Now start signing:

Editing a Transaction

The following code enables the editing of a local transaction created by the code snippet in the previous section:

Getting a List of Transactions

The following code fetches a list of transactions, based on their type (ESLTransactionsType). For a list of types, view the interface eSignLive.h.

Creating a Navigation Controller Stack

If you don't have a Navigation Controller Stack, you can create one programmatically by using the following code. To get feedback, you can also implement UINavigationControllerDelegate methods.

Troubleshooting

This section discusses the following anomalies:

Error Linking Swift Libraries

Problem

An error message of the following form appears:

dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /<some path here>/<appname>.app/Frameworks/eSignLiveSDK.framework/eSignLiveSDK
Reason: image not found      

Solution

  1. Go to Target Settings.
  2. Click the Build Settings tab.
  3. Set Always Embed Swift Standard Libraries = YES. In the previous version of Xcode, this flag was called EMBEDDED_CONTENT_CONTAINS_SWIFT.

PDF Header Not Found

Problem

The application crashes, and logs the following error message:

Failed to find PDF header: `%PDF' not found   

This occurs when the SDK tries to render a PDF file, but the file could not be loaded.

Solution

Please verify that the PDF exists, and that it has not been corrupted.

Delegate Not Found

Problem

An error message of the following form appears:

Fatal Error: Delegate not found   

This occurs when the delegate for the eSignLive iOS SDK has not been set up. Doing that is the most important part of the SDK's configuration. That delegate acts as: (1) a hook to load the User Interface; (2) a platform to which Callbacks can be sent.

Solution

Ensure that the delegate exists (see Initial Configuration).

Failure to Load Fonts

Problem

An error message of the following form appears:

Failed to load font: The operation couldn’t be completed. Invalid argument   

Solution

Ensure that all required font files have been added to the project target and to the file info.plist. In particular, the following font values must have been added: Ubuntu-Bold.ttf, Ubuntu-Italic.ttf, Ubuntu-Regular.ttf, Ubuntu-Light.ttf.

Invalid Certificate

Problem

An error message of the following form appears:

Invalid Certificate :Certification Evaluation Error
Assertion failure in -[SMESLConnection connection:willSendRequestForAuthenticationChallenge:], <somepath>SMESLConnection.m:<linenumber>

This occurs when the certificate chain is invalid.

Solution

Try the following setting:

WARNING: Setting this parameter to YES disables protection against man-in-the-middle attacks on your application’s network communications. Therefore we do not recommend setting it to YES in a Production environment.

PLBuildVersion Warning

A warning of the following form appears:

objc[11324]: Class PLBuildVersion is implemented in both /Applications/
Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/
iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/
AssetsLibraryServices (0x11c4e4998) and /Applications/Xcode.app/
Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/
SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/
PhotoLibraryServices (0x11c309d38). One of the two will be used. Which one is undefined. 

This warning appears due to a bug in version 10 of Apple's iOS SDK.

Crash When Accessing Contacts

Problem

The application crashes when it tries to access privacy-sensitive Contacts data without a description of how the application will use that data.

The file info.plist must contain an NSContactsUsageDescription key, with a string value that explains to users how the application will use this Contacts data.

Solution

Ensure that the file info.plist of your project target contains an NSContactsUsageDescription key, with a string value that explains how the application will use itsContacts data.