GithubHelp home page GithubHelp logo

mobile-sdk-ios's Introduction

Jumio

Version License Platform Pod Version Carthage compatible Swift 3.0-5.x

Table of Contents

Overview

The Jumio Software Development Kit (SDK) provides you with a set of tools and UIs (default or custom) to develop an iOS application perfectly fitted to your specific needs.

Onboard new users and easily verify their digital identities, by making sure the IDs provided by them are valid and authentic. Extract data from IDs and credit cards completely automatically and within seconds. Confirm users really are who they say they are by having them take a quick selfie and match it to their respective documents. Jumio uses cutting-edge biometric technology such as 3D face mapping to make sure there is an actual, real-life person in front of the screen.

Start Screen Scan Screen Result Screen

Using the Jumio SDK will allow you to create the best possible solution for your individual needs, providing you with a range of different services to choose from.

Get Started

Please note that basic setup is required before continuing with the integration of any of the following services.

Jumio ID Verification & Fastfill

ID Verification (formerly known as Netverify) is a secure and easy solution that allows you to establish the genuine identity of your users in your mobile application, by verifying their passports, government-issued IDs and VISA in real-time. Very user-friendly and highly customizable, it makes onboarding new customers quick and simple.

Jumio Authentication

Authentication is a cutting-edge biometric-based service that establishes digital identities of your users, simply by taking a selfie. Advanced 3D face mapping-technology quickly and securely authenticates users and their digital identities.

Jumio Document Verification

Document Verification is a powerful solution that allows users to scan various types of documents quickly and easily in your mobile application. Data extraction is already supported for various document types, such as bank statements.

Jumio BAM Checkout

BAM Checkout enables you to extract data from your customer's credit card and/or ID in your mobile application within seconds. Every checkout flow is fully automated, no manual input necessary!

Quickstart

The aim of the following section is to provide quick and very basic guide on how to get started with the iOS sample application that can be found here on Github. You will require a commercial Jumio License to successfully run any of our examples. Please refer to [email protected] for details.

First things first, you’ll need an up-to-date version of Xcode to open and work with the sample project.

Start by downloading the iOS sample application from the Jumio Github repo. You can do this either by cloning the repo (using SHH oder HTTPS) to your local device or simply downloading everything as a ZIP. Once you’ve got the sample application downloaded and unzipped if necessary, open Xcode. You’ll be faced with a couple of options. Choose Open another project in the bottom right corner and navigate to where you’ve saved your sample application. Select the JumioMobileSDKSample.xcodeproj and open it.

You also have the option of simply starting Xcode and choosing the option Clone an existing project in the left-hand menu. In this case, you’ll need to add the URL of the entire repository on Github. If prompted, choose master and start cloning to your local device.

When the cloning is done, once again just choose the JumioMobileSDKSample.xcodeproj and open it.

Note: Our sample project on GitHub contains the sample implementation without our frameworks. The project file contains a “Run Script Phase” which downloads our frameworks automatically during build time.

The iOS sample application contains the packages SampleObjc and SampleSwift. Both of those packages contain the exact same thing, using Objective C and Swift respectively. In each of them, you will find: MainStoryboardSwift / MainStoryboardObjC
BAMCheckout
Netverify
Authentication
DocumentVerification

Each of these folders contains at least one corresponding ViewController-class. In each class, the most important methods for this service is shown and quickly outlined.

At the top of each ViewController-class you’ll find the following parameters:

config.apiToken
config.apiSecret

If you haven’t done so yet, log into your Jumio customer portals. You can find your customer API token and API secret on the Settings page under the API credentials tab. Add your individual key and token instead of the placeholders. The default setting for the data center is JumioDataCenterUS. If you're using BAM Checkout, you'll need to use the BAM API token and BAM API secret.

Note: We strongly recommend storing all credentials outside of your app! We suggest to not hardcode them within your application but load them during runtime from your server-side implementation.

Once you start up the sample application, you'll be given the option of trying out ID Verification. Select a different service from the action bar at the bottom to try out another service. Your application will also need camera permission, which will be prompted for automatically once you try to start any of services.

Tutorial List

Basics

General Requirements

The minimum requirements for the SDK are:

  • iOS 10.0 and higher
  • Internet connection

The following architectures are supported in the SDK:

  • ARMv7
  • ARM64
  • x86_64 works on iOS emulator only

Permissions

The app’s Info.plist must contain the NSCameraUsageDescription key with a string value explaining to the user how the app uses this data. Example: “This will allow to take photos of your credentials."

Integration

Check the Xcode sample project to learn the most common use. Make sure to use the device only frameworks for app submissions to the AppStore. Read more detailed information on this here: Manual integration

Tutorial

Integration into existing project (Video): How to add Jumio Mobile SDK-functionalities to an existing Xcode project

Via Cocoapods

Jumio supports CocoaPods as dependency management tool for easy integration of the SDK. You are required to use Cocoapods 1.9.0 or newer.

If you are not yet using Cocoapods in your project, first run:

sudo gem install cocoapods
pod init

Then update your local clone of the specs repo in Terminal to ensure that you are using the latest podspec files using:

pod repo update

Adapt your Podfile and add the pods according to the product(s) you use. Check the following example how a Podfile could look like:

source 'https://github.com/CocoaPods/Specs.git'

use_frameworks! # Required for proper framework handling

pod 'JumioMobileSDK', '~>3.9.1' # Use ID Verification, Authentication, Document Verification and BAM Checkout together in your app

pod 'JumioMobileSDK/Netverify', '~>3.9.1' # Use full ID Verification and Authentication functionality
pod 'JumioMobileSDK/NetverifyBase', '~>3.9.1' # For Fastfill, ID Verification basic functionality
pod 'JumioMobileSDK/NetverifyNFC', '~>3.9.1' # For Fastfill, ID Verification functionality with NFC extraction
pod 'JumioMobileSDK/NetverifyBarcode', '~>3.9.1' # For Fastfill, ID Verification functionality with barcode extraction
pod 'JumioMobileSDK/NetverifyFace+iProov', '~>3.9.1' # For Fastfill, ID Verification functionality with Identity Verification, Authentication

pod 'JumioMobileSDK/DocumentVerification', '~>3.9.1' # Use Document Verification functionality

pod 'JumioMobileSDK/BAMCheckout', '~>3.9.1' # Use BAM Checkout functionality

Certified Liveness Vendor

Jumio uses Certified Liveness technology to determine liveness.

// any of the necessary subpods, for example:
pod 'JumioMobileSDK/NetverifyBase', '~>3.9.1' # For Fastfill, ID Verification basic functionality

// mandatory for Identity Verification
pod 'JumioMobileSDK/NetverifyFace+iProov', '~>3.9.1' # For Fastfill, ID Verification functionality with Identity Verification, Authentication

// mandatory for Identity Verification
post_install do |installer|
  installer.pods_project.targets.each do |target|
    if ['iProov', 'Socket.IO-Client-Swift', 'Starscream'].include? target.name
      target.build_configurations.each do |config|
          config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
      end
    end
  end
end

Install the pods to your project via Terminal:

pod install

Note: In case your application uses ZoOm as a liveness technology, please contact Jumio support or your account manager directly.

Tutorial

Integration with Cocoapods (Video): How to add the Jumio Mobile SDK to an existing Xcode project using Cocoapods

Via Carthage

Jumio supports Carthage as dependency management tool for easy integration of the SDK.

Adapt you Cartfile and add the JumioMobileSDK dependency. Check the following example how a Cartfile could look like:

binary "https://raw.githubusercontent.com/Jumio/mobile-sdk-ios/master/Carthage/JumioMobileSDK.json" == 3.9.1

Update you Carthage dependencies via Terminal:

carthage update

Tutorial

Integration with Carthage (Video): How to add the Jumio Mobile SDK to an existing Xcode project using Carthage

App Thinning and Size Matters

App thinning (app slicing, bitcode and on-demand resources) is supported within the SDK. For app slicing, the image resources are placed within a xcassets collection. For ID Verification and Fastfill, some resource files (e.g. images) are loaded on demand.

In case you experience a build error when building your app in Debug configuration and aim to run it on a device, we advise to temporarily disable the build setting "Enable Bitcode" in your Xcode project.

Manually

Download our frameworks manually via ios-jumio-mobile-sdk-3.9.1.zip.

Using iProov (manually):

  • JumioIProov.framework
  • iProov.framework
  • Starscream.framework (iProov dependency)
  • SocketIO.framework (iProov dependency)

Note: Our sample project on GitHub contains the sample implementation without our frameworks. The project file contains a “Run Script Phase” which downloads our frameworks automatically during build time. In case your application uses ZoOm as a liveness vendor, please contact Jumio support or your account manager directly.

The Jumio Mobile SDK consists of several dynamic frameworks. Depending on which product you use, you'll have to add the right frameworks to your project.

Please see Strip unused frameworks for more information.

The framework binaries are available with support for device and simulator architecture. Make sure to remove the simulator architecture from our frameworks for app submissions to the AppStore. If this step is not performed, your submission will be rejected by Apple. Add the following code snippet as run script build phase to your app project and ensure that it is executed after the frameworks are embedded. Please see the required setup in our sample project.

Note: The simulator architecture is automatically removed if using Cocoapods via "[CP] Embed Pods Frameworks" build phase.

if [[ "$CONFIGURATION" == "Release" ]]; then
  $PROJECT_DIR/remove-simulator-architecture.sh
fi

Code snippet source: https://stackoverflow.com/questions/30547283/submit-to-app-store-issues-unsupported-architecture-x86

Add the following linker flags to your Xcode Build Settings:
Note: Added automatically if using CocoaPods.

  • "-lc++"
  • "-ObjC" (recommended) or -all_load

Make sure that the following Xcode build settings in your app are set accordingly:

Setting Value
Link Frameworks Automatically YES

Language Localization

Our SDK supports localization for different languages. All label texts and button titles can be changed and localized using the Localizable-<YOUR_PRODUCT>.strings file. Just adapt the values to your required language, add it to your app or framework project and mark it as Localizable. This way, when upgrading our SDK to a newer version your localization file won't be overwritten. Make sure, that the content of this localization file is up to date after an SDK update. Note: If using CocoaPods, the original file is located under /Pods/JumioMobileSDK/Localizations.

For our products ID Verification & Fastfill, Authentication & Document Verification we support following languages for your convenience:

Afrikaans, Arabic, Bulgarian, Chinese(Simplified), Chinese(Traditional), Croatian, Czech, Danish, Dutch, Estonian, English, Finnish, French, German, Greek, Hindi, Hungarian, Indonesian, Italian, Japanese, Khmer, Korean, Latvian, Lithuanian, Maltese, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish, Thai, Turkish, Vietnamese, Zulu

Please check out our sample project to see how to use the strings files in your app.

Our SDK supports accessibility features. Visually impaired users can enable VoiceOver or increase text size on their device. VoiceOver uses separate values in the localization file, which can be customized.

Security

All SDK related traffic is sent over HTTPS using TLS and public key pinning, and additionally, the information itself within the transmission is also encrypted utilizing Application Layer Encryption (ALE). ALE is Jumio custom-designed security protocol which utilizes RSA-OAEP and AES-256 to ensure that the data cannot be read or manipulated even if the traffic was captured.

Release Notes

Please refer to our Change Log for more information about our current SDK version and further details.

Support

Previous Version

The previous release version 3.9.0 of the Jumio Mobile SDK is supported until 2021-09-10.

In case the support period is expired, no bug fixes and technical support are provided anymore. Current bugs are typically fixed in the upcoming versions. Older SDK versions will keep functioning with our server until further notice, but we highly recommend to always update to the latest version to benefit from SDK improvements and bug fixes.

Two-factor Authentication

If you want to enable two-factor authentication for your Jumio customer portal please contact us. Once enabled, users will be guided through the setup upon their first login to obtain a security code using the "Google Authenticator" app.

Licenses

The software contains third-party open source software. For more information, please see licenses.

This software is based in part on the work of the Independent JPEG Group.

Contact

If you have any questions regarding our implementation guide please contact Jumio Customer Service at [email protected]. The Jumio online helpdesk contains a wealth of information regarding our service including demo videos, product descriptions, FAQs and other things that may help to get you started with Jumio. Check it out at here.

Copyright

© Jumio Corporation, 395 Page Mill Road, Suite 150, Palo Alto, CA 94306

The source code and software available on this website (“Software”) is provided by Jumio Corp. or its affiliated group companies (“Jumio”) "as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall Jumio be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including but not limited to procurement of substitute goods or services, loss of use, data, profits, or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this Software, even if advised of the possibility of such damage. In any case, your use of this Software is subject to the terms and conditions that apply to your contractual relationship with Jumio. As regards Jumio’s privacy practices, please see our privacy notice available here: Privacy Policy.

mobile-sdk-ios's People

Contributors

jumiomobileteam avatar bernadetteth avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.