Skip to content

Activating the license#

To integrate LUNA ID POS with your project and use its features, you need to activate the license.

The license activation mechanism is as follows:

  1. LUNA ID POS first checks if you provided a license file via the initEngine method.
  2. If provided, the license is directly passed to the engine.
  3. If not provided, the system attempts to read the license from the assets folder and passes it to the engine.
  4. If no license is found in either location, the activation process fails.

To activate the license, follow the step below:

1․ Obtain the following parameters from VisionLabs:

Parameter Description
Server The URL of the license server.
EID A unique identifier for your application.
ProductID The product identifier for LUNA ID POS.

2․ Specify the parameters in license.conf and save the changes.

Example structure of license.conf

Here is an example structure of the file:

<?xml version="1.0"?>
<settings>
    <section name="Licensing::Settings">
            <param name="Server" type="Value::String" text="https://example-license-server.com"/>
            <param name="EID" type="Value::String" text="your-eid-here"/>
            <param name="ProductID" type="Value::String" text="your-product-id-here"/>
            <param name="Filename" type="Value::String" text="license.dat"/>
            <param name="ContainerMode" type="Value::Int1" x="0"/>
            <param name="ConnectionTimeout" type="Value::Int1" x="15"/>
            <param name="licenseModel" type="Value::Int1" x="2" />
    </section>
</settings>

3․ Save the license.conf file in the assets/data/license.conf directory of your project.

The license key will be generated and saved to the specified directory. The license file has a binary format. At the next launch of your app on the same device, the license will be read from this file.

4․ Call the initEngine() method to initialize LUNA ID POS and activate the license.

Here is an example implementation:

private fun initLunaSdk() {
    val baseUrl = "url"
    val token = "token"
    val headers = mapOf("Authorization" to token)
    val apiHumanConfig = ApiHumanConfig(baseUrl, headers)
    val lunaConfig = LunaConfig.create(
        acceptOccludedFaces = true,
        acceptOneEyed = false,
        acceptEyesClosed = false,
        detectFrameSize = 350,
        skipFrames = 36,
        ags = 0.5f,
        bestShotInterval = 500,
        detectorStep = 1,
        usePrimaryFaceTracking = true,
        glassesChecks = setOf(GlassesCheckType.GLASSES_CHECK_SUN)
    )

    FacePay.initEngine(
        app: Application,
        lunaConfig: LunaConfig,
        apiHumanConfig: ApiHumanConfig? = null,
        license : File? = null,
        timeoutMillis : Long = 30_000L
    )
}

Note

The parameters in the example are set to default values. Adjust them according to your requirements.

Key components of the example code

The example code has the following components:

Component Description
baseUrl A variable that specifies the URL to LUNA PLATFORM 5. For details, see Interaction with LUNA PLATFORM 5.
token A variable that specifies a LUNA PLATFORM 5 token, which will be transferred to a request header from LUNA ID POS.
headers A map that specifies headers that will be added to each request to be sent to LUNA PLATFORM 5.
apiHumanConfig An optional configuration parameter for calling the LUNA PLATFORM 5 API. Can be set to null if no LUNA PLATFORM 5 API calls are required. This will also disable the Online OneShotLiveness estimation, regardless of the onlineLivenessSettings argument.
ApiHumanConfig A class required for configuration to call the LUNA PLATFORM 5 API.
lunaConfig An argument to be passed for best shot parameters.
LunaConfig A class that describes best shot parameters.
acceptOccludedFaces A parameter that specifies whether an image with an occluded face will be considered the best shot. For details, see Getting the best shot with an occluded face.
acceptEyesClosed A parameter that specifies whether an image with two closed eyes will be considered the best shot. For details, see Getting the best shot with faces with closed eyes.
detectFrameSize A parameter that specifies a face detection bounding box size.
skipFrames A parameter that specifies a number of frames to wait until a face is detected in the face recognition area before video recording is stopped.
ags A parameter that specifies a source image score for further descriptor extraction and matching. For details, see AGS.
bestShotInterval A parameter that specifies a minimum time interval between best shots.
detectorStep A parameter that specifies a number of frames between frames with full face detection.
usePrimaryFaceTracking A parameter that specifies whether to track the face that was detected in the face recognition area first.
glassesChecks A parameter that specifies what images with glasses can be best shots. For details, see Getting the best shot with faces with occluded eyes.
FacePay.initEngine A method that activates the LUNA ID POS license.
license An instance of java.io.File. If this parameter is not provided, the system will use the default license.conf file located in the project.
timeoutMillis The timeout for license activation, with a default value of 30 seconds (30,000 milliseconds).

5․ Subscribe to events from the LunaID.engineInitStatus flow to monitor the initialization process:

LunaID.engineInitStatus.flowWithLifecycle(this.lifecycle, Lifecycle.State.STARTED)
.onEach {
    if(it is LunaID.engineInitStatus.InProgress) {
   // LUNA ID POS is loading
   }else if(it is LunaID.engineInitStatus.Success) {
   // LUNA ID POS is ready
    }
}.flowOn(Dispatchers.Main)
.launchIn(this.lifecycleScope)