LogoLogo
  • Welcome!
  • GETTING STARTED
    • Signing Up
    • Choose a Product
    • Choose an Integration Option
    • Run Your First Test Job
    • Complete Your KYC
    • Fund Your Wallet
    • Go Live!
    • Pricing
  • SUPPORTED ID TYPES & DOCUMENTS
    • For Individuals (KYC)
      • Using ID Number
        • Supported Countries
          • Côte d'Ivoire
            • National ID (without Photo)
            • Resident ID (without Photo)
          • Ghana
            • Ghana Card
            • Passport
            • Voter's ID
          • Kenya
            • Alien Card
            • KRA Pin
            • National ID
            • National ID (without Photo)
            • Passport
            • Tax Information
          • Nigeria
            • Bank Account
            • BVN
            • NIN V2
            • NIN Slip Verification
            • V_NIN (Virtual NIN)
            • Phone Number
            • Voter's ID
          • South Africa
            • National ID
            • National ID (without Photo)
            • Phone Number
          • Uganda
            • National ID (without Photo)
            • Basic KYC in Uganda
          • Zambia
            • Bank Account
            • TPIN
          • Zimbabwe
            • National ID (without Photo)
        • Test Data
          • Customising Sandbox Test Data
        • ID Number Regex
        • Visual Samples of Supported ID Types
      • Using Document Image
        • Continents
          • Africa
          • Asia and the Middle East
          • Europe
          • North America
          • Oceania
          • South America
    • For Businesses (KYB)
      • Supported Countries
        • Nigeria
          • Business Registration
          • Tax Information
        • Kenya
          • Business Registration
        • South Africa
          • Business Registration
      • ID Number Regex
  • PRODUCTS
    • For Individuals (KYC)
      • AML Check
        • AML News Media
      • Basic KYC
      • Biometric KYC
      • Digital Address Verification
      • Document Verification
        • Document Verification
        • Enhanced Document Verification
      • Electronic Signature
      • Enhanced KYC
      • Phone Number Verification
      • SmartSelfie™ Authentication
      • SmartSelfie™ Compare
      • Smile Secure
    • For Businesses (KYB)
      • Business Verification
  • Integration Options
    • Mobile
      • Getting Started
      • Products
        • Biometric KYC
        • BVN Consent
        • Document Verification
        • Enhanced Document Verification
        • Enhanced KYC
        • SmartSelfie™ Enrollment and Authentication
        • Enhanced SmartSelfie™ Enrollment And Authentication
      • Customization
        • UI Components
      • Offline Mode
      • Release Notes
        • Android Release Notes
        • iOS Release Notes
        • Flutter Release Notes
        • React Native Release Notes
    • No-Code
      • Smile Links
        • Link FAQs
        • Rest API
    • Server to Server
      • Ruby
        • Installation
        • Signature
        • Products
          • Basic KYC
          • Enhanced KYC
          • Biometric KYC
          • Document Verification
          • SmartSelfie™ Authentication
          • KYB - Business Verification
          • AML Check
        • Generate Token for Web Integration
        • Utilities
      • Python
        • Installation
        • Signature
        • Products
          • Basic KYC
          • Enhanced KYC
          • Biometric KYC
          • Document Verification
          • SmartSelfie™ Authentication
          • Business Verification
        • Generate Token for Web Integration
        • Utilities
      • Java
        • Release Notes
        • Installation
        • Signature
        • Products
          • Basic KYC
          • Enhanced KYC
          • Biometric KYC
          • Document Verification
          • SmartSelfie™ Authentication
        • Generate Token for Web Integration
        • Utilities
      • Node.js
        • Installation
        • Signature
        • Products
          • Basic KYC
          • Enhanced KYC
          • Biometric KYC
          • Document Verification
          • Enhanced Document Verification
          • SmartSelfie™ Authentication
          • Business Verification
        • Generate Token for Web Integration
        • Utilities
      • PHP
        • Installation
        • Signature
        • Products
          • Basic KYC
          • Enhanced KYC
          • Biometric KYC
          • Document Verification
          • SmartSelfie™ Authentication
        • Generate Token for Web Integration
        • Utilities
    • Rest API
      • Signing your API Request
        • Using Signature
      • Products
      • Postman Collection
      • Utilities
    • Web / Mobile Web
      • Web Integration
        • Installation
        • Usage
        • End User Consent
        • Support
      • Javascript SDK
        • Installation
        • Usage
        • Migration
        • Deprecated Version
          • Installation
          • Usage
          • Notes
          • Support
  • FURTHER READING
    • FAQs
      • What are your support hours?
      • How do I set up a callback?
      • How to re-enroll, deactivate or delete a user?
      • Add or remove team members
      • What are top-level keys?
      • What are partner_params?
      • How do job types map to the new product names?
      • Is there an API I can use to monitor my wallet balance?
      • Is there an API I can query to check the availability status of an ID type?
      • How do I integrate Smile ID in other countries or query other ID types?
      • What are the image types I can upload to Smile ID?
      • Why aren't Kenyan IDs returning images for some IDs queried?
      • Why are some of my bank verification requests returning 'ID authority unavailable'?
      • How can I look up a specific user's data?
      • Selfie best-practices
      • Document capture best-practices
      • What happens under the hood?
      • Guide to the user consent screen
      • What is code 2302?
      • Using the Demo App and Scanning QR codes
    • Job status
    • KYC receipts
    • Result codes
      • Error codes
    • Securing your account with two-factor authentication (2FA)
    • Security Overview
    • Troubleshooting
      • Troubleshooting error 2204 & 2205 - "You're not authorized to do that"
      • Why is my Web API job taking so long?
      • Image capture issues on web client
Powered by GitBook
On this page
  • Show the dialog
  • BVN Consent Screen
  • Android Setup

Was this helpful?

  1. Integration Options
  2. Mobile
  3. React Native (deprecated)

Consent Screen

The SDK has prebuilt screens to request consent from a user before running a job which may return personal identifiable information. This gives the user control and also ensures compliance

Last updated 11 months ago

Was this helpful?

On android the screen is instantiated as a dialog on top of your app and on iOS the screen is instantiated as a view controller so it is important to take this into consideration if you have any navigation that is expected before or after the consent screen has been shown

Show the dialog

RnSmileId.requestConsent("<TAG>", "<COMPANY_LOGO>",<BUNDLE_ID/PACKAGE_NAME>,
<COMPANY_NAME>, <PRIVACY_URL>);
  • TAG <STRING>This is important that it matches the same tag which may have been or will be used to capture the selfie and or id card document as it will determine if the job will be submitted or not when consent is required for the id type

  • COMPANY_LOGO <STRING> This is a string typically the app icon name it has to be the name of an image resource in your res folder for android and or in your assets for iOS, so the user is familiar with what they will finally see which the SDK will present on the consent screen. Ideal sizes for this resource are 48x48 mdpi 72x72 hdpi

    96x96 xhdpi

    144x144 xxhdpi

    192x192 xxxhdpi

  • BUNDLE_ID/PACKAGE_NAME <STRING> This is your app's bundle id on iOS and your app's package name on android, this will be used to fetch the resources to be shown on the consent screen

  • COMPANY_NAME <STRING>This is the company name that will be presented on the consent screen

  • PRIVACY_URL <STRING> This is a link to a valid web page that contains your company's privacy policy the user can click this and view the privacy policy.

The consent screen will be shown and this code runs asynchronously and will show the below screens for iOS and android and will return a hashmap which containts a key SID_RESULT_CODE anything other than -1 means it the user has declined consent and -1 means the user agreed to consent and you may proceed as normal

BVN Consent Screen

The SDK has prebuilt screens to request consent from a user before running a job with the BVN ID Type.

The screen is instantiated as a activity so it is important to take this into consideration if you have any navigation that is expected and whether to show it from a fragment or from an activity.

Android Setup

Step 1

Add a theme in your app's styles which looks like the below

<style name="AppTheme.NoActionBar">
  <item name="windowActionBar">false</item>
  <item name="windowNoTitle">true</item>
  <item name="android:windowSoftInputMode">adjustResize</item>
</style>

Step 2

Declare the smile id consent activities in your app's android manifest

<activity
    android:name="com.smileidentity.libsmileid.core.consent.ConsentActivity"
    android:exported="false"
    android:theme="@style/AppTheme.NoActionBar" />

<activity
    android:name="com.smileidentity.libsmileid.core.consent.bvn.ui.activities.ConsentBVNNumberActivity"
    android:exported="false"
    android:theme="@style/AppTheme.NoActionBar" />

<activity
    android:name="com.smileidentity.libsmileid.core.consent.bvn.ui.activities.ConsentBVNContactMethodActivity"
    android:exported="false"
    android:theme="@style/AppTheme.NoActionBar" />

<activity
    android:name="com.smileidentity.libsmileid.core.consent.bvn.ui.activities.ConsentOTPVerificationActivity"
    android:exported="false"
    android:theme="@style/AppTheme.NoActionBar" />

Show Consent

Show the consent when ready

try {
RnSmileId.requestBVNConsent(<TAG>, <ID_TYPE>, <COMPANY_NAME>,
    <YOUR_COMPANY_LOGO>,"<BUNDLE_ID/PACKAGE_NAME>",
    <PRIVACY_POLICY_URL>, <ENVIRONMENT>);
} catch (e) {
//  e will contain an error code and a message for the failure
}

If ENVIRONMENT is set to false (for sandbox), enter the following on the screen for BVN and OTP: BVN: 00000000000 OTP: 000000 Any other BVN or OTP will return invalid errors

Variable
Description

TAG

This is a local unique job identifier which you can use to identify the end to end process for this job which should be an alphanumeric string

ID_TYPE

Can be BVN or BVN_MFA the user will be shown BVN as the id type they are consenting to

COMPANY_NAME

The company name to be shown to the user

COMPANY_LOGO

The company logo to be shown to the user

<BUNDLE_ID/PACKAGE_NAME>

You apps package name for android or bundle id for iOS

ENVIRONMENT

true for production and false for sandbox

PRIVACY_POLICY

A valid url to your company's privacy policy

Getting Results

If the consent flow succeeds then it returns a promise with an object with key value maps and which will contain

<SID_RESULT_CODE> This will be 1 for success and 0 for failed SUCCESS STATE <TAG> the tag used to identify the end to end process for this job which should be an alphanumeric string <BVNNUMBER> the user entered BVN number <SESSION_ID> the session_id which should be sent together with the userIdInfo with a key session_id and this value FAILED STATE <ERROR_VALUE> The reason for the failure <TAG> The tag used to request consent\

If for any reason the consent flow fails the catch block will return an exception with an error code and an error message

Possible ERROR_VALUE are

  • 777 Missing partner name

  • 778 Missing partner Logo

  • 779 Error with your configuration please check documentation

  • 780 User declined consent summary

  • 781 A network error occurred

  • 782 An error occurred with auth smile

  • 783 An error occurred after inputing the BVN number this may be the user entered an invalid BVN error or there was a connection issue whilst initiating consent

  • 784 An error occurred after selecting the mode (sms/email) or the user clicked this is likely a network or server error

  • 785 An error occurred because the presented mode of confirmation are no longer valid for the user so they clicked these are invalid

  • 786 An error occurred during OTP validation

This will present the below screens

BVN Consent Summary Screen

BVN Number Screen

BVN Mode Selection Screen

BVN OTP Screen

ANDROID
iOS