Capacitor SDK Integration

Credolab Capacitor SDK is a set of libraries designed to capture a client's digital footprint from mobile devices for future processing of scorecards and fragments.

📘

Before You Start

Ensure you have obtained a token, server URL, and auth key from your Credolab Customer Success Manager.


Requirements

PlatformMinimum Version
Capacitor7.0.0 or higher
iOS11.0 or higher
Android API21 or higher
🚧

Iovation Module Requirements

  • If the iOS Iovation plugin is used, the minimum supported iOS version is 15.0 or higher.
  • If the Android Iovation plugin is used, the minimum supported Android API version is 26 or higher.

Available Modules

Core Module (Mandatory)

PackageDescription
@credolab/capacitor-coreCore module for data collection orchestration

Android Optional Modules

PackagePermissions
@credolab/capacitor-android-accountRuntime permissions
@credolab/capacitor-android-audioRuntime permissions
@credolab/capacitor-android-calendarRuntime permissions
@credolab/capacitor-android-calllogRuntime permissions
@credolab/capacitor-android-contactRuntime permissions
@credolab/capacitor-android-guardNo permissions required
@credolab/capacitor-android-imagesRuntime permissions
@credolab/capacitor-android-iovationNormal permissions
@credolab/capacitor-android-smsRuntime permissions
@credolab/capacitor-android-telephonyRuntime permissions
@credolab/capacitor-android-videoRuntime permissions

iOS Optional Modules

PackagePermissions
@credolab/capacitor-ios-applicationNo permissions required
@credolab/capacitor-ios-calendar-eventsRuntime permissions
@credolab/capacitor-ios-calendar-remindersRuntime permissions
@credolab/capacitor-ios-contactRuntime permissions
@credolab/capacitor-ios-iovationNo permissions required
@credolab/capacitor-ios-locationRuntime permissions
@credolab/capacitor-ios-mediaRuntime permissions
@credolab/capacitor-ios-musicRuntime permissions
@credolab/capacitor-ios-telephonyNo permissions required

Step 1: Install Dependencies

Configure NPM Registry

Add an .npmrc file at the root level of your project with the path to the plugin repository:

@credolab:registry=https://npm.cloudsmith.io/credolab/hybrid/

Important: Always exclude .npmrc files from version control (e.g., add them to .gitignore). These files may contain sensitive authentication tokens or private registry credentials that should never be committed to the repository.

Install Capacitor Plugins

Install the required plugins to your project:

# Core module (mandatory)
npm install @credolab/capacitor-core

# Android modules (optional)
npm install @credolab/capacitor-android-account
npm install @credolab/capacitor-android-audio
npm install @credolab/capacitor-android-calendar
npm install @credolab/capacitor-android-calllog
npm install @credolab/capacitor-android-contact
npm install @credolab/capacitor-android-guard
npm install @credolab/capacitor-android-images
npm install @credolab/capacitor-android-iovation
npm install @credolab/capacitor-android-sms
npm install @credolab/capacitor-android-telephony
npm install @credolab/capacitor-android-video

# iOS modules (optional)
npm install @credolab/capacitor-ios-application
npm install @credolab/capacitor-ios-calendar-events
npm install @credolab/capacitor-ios-calendar-reminders
npm install @credolab/capacitor-ios-contact
npm install @credolab/capacitor-ios-iovation
npm install @credolab/capacitor-ios-location
npm install @credolab/capacitor-ios-media
npm install @credolab/capacitor-ios-music
npm install @credolab/capacitor-ios-telephony
⚠️

Note

Only install the modules that align with your application's permission requirements.

🚧

Note - iOS Application module

To integrate the IosApplicationModule, you need to add URL schemes to the Info.plist file in your project (a maximum of 50 schemes is allowed).

Please refer to the native module intagration where the default list is specified.


Step 2: Configure Native Platforms

Android Configuration

Open android/build.gradle and add the Credolab Maven repository (replace $TOKEN with the actual value):

allprojects {
    repositories {
        // ... existing repositories
        maven { url "https://dl.cloudsmith.io/$TOKEN/credolab/proxyen-sdk/maven/" }
    }
}

iOS Configuration

Add the CocoaPods repository to the beginning of ios/App/Podfile (replace $TOKEN with the actual value):

source 'https://token:[email protected]/basic/credolab/proxyen-sdk/cocoapods/index.git'
📘

Unable to find a specification for library_name?

In certain cases, you may encounter this error during pod installation. To resolve it, add the following CocoaPods CDN to your Podfile:

source 'https://cdn.cocoapods.org/'

Sync Project

Run the following command to sync your Capacitor project:

npx cap sync

Step 3: Implement CredoAppService

Import Required Modules

import { CredoAppService } from '@credolab/capacitor-core';

// Android modules
import { AndroidAccountModule } from '@credolab/capacitor-android-account';
import { AndroidAudioModule } from '@credolab/capacitor-android-audio';
import { AndroidCalendarModule } from '@credolab/capacitor-android-calendar';
import { AndroidCallLogModule } from '@credolab/capacitor-android-calllog';
import { AndroidContactModule } from '@credolab/capacitor-android-contact';
import { AndroidGuardModule } from '@credolab/capacitor-android-guard';
import { AndroidImagesModule } from '@credolab/capacitor-android-images';
import { AndroidIovationModule } from '@credolab/capacitor-android-iovation';
import { AndroidSmsModule } from '@credolab/capacitor-android-sms';
import { AndroidTelephonyModule } from '@credolab/capacitor-android-telephony';
import { AndroidVideoModule } from '@credolab/capacitor-android-video';

// iOS modules
import { IosApplicationModule } from '@credolab/capacitor-ios-application';
import { IosCalendarEventsModule } from '@credolab/capacitor-ios-calendar-events';
import { IosCalendarRemindersModule } from '@credolab/capacitor-ios-calendar-reminders';
import { IosContactModule } from '@credolab/capacitor-ios-contact';
import { IosIovationModule } from '@credolab/capacitor-ios-iovation';
import { IosLocationModule } from '@credolab/capacitor-ios-location';
import { IosMediaModule } from '@credolab/capacitor-ios-media';
import { IosMusicModule } from '@credolab/capacitor-ios-music';
import { IosTelephonyModule } from '@credolab/capacitor-ios-telephony';

Build and Configure CredoAppService

async function initializeCredoAppService(): Promise<CredoAppService> {
  const service = new CredoAppService();

  // Add iOS modules
  await service.addModuleAsync(new IosApplicationModule());
  await service.addModuleAsync(new IosCalendarEventsModule());
  await service.addModuleAsync(new IosCalendarRemindersModule());
  await service.addModuleAsync(new IosContactModule());
  await service.addModuleAsync(new IosIovationModule());
  await service.addModuleAsync(new IosLocationModule());
  await service.addModuleAsync(new IosMediaModule());
  await service.addModuleAsync(new IosMusicModule());
  await service.addModuleAsync(new IosTelephonyModule());

  // Add Android modules
  await service.addModuleAsync(new AndroidAccountModule());
  await service.addModuleAsync(new AndroidAudioModule());
  await service.addModuleAsync(new AndroidCalendarModule());
  await service.addModuleAsync(new AndroidCallLogModule());
  await service.addModuleAsync(new AndroidContactModule());
  await service.addModuleAsync(new AndroidGuardModule());
  await service.addModuleAsync(new AndroidImagesModule());
  await service.addModuleAsync(new AndroidIovationModule());
  await service.addModuleAsync(new AndroidSmsModule());
  await service.addModuleAsync(new AndroidTelephonyModule());
  await service.addModuleAsync(new AndroidVideoModule());

  return service;
}

Collect Data

async function collectDataset(): Promise<string> {
  try {
    const service = await initializeCredoAppService();
    const dataset = await service.collectAsync();
    return dataset;
  } catch (error: unknown) {

    const message = error instanceof Error ? error.message : String(error);
    const code = error instanceof Error && 'code' in error ? (error as any).code : 'UNKNOWN';
    // Log error details to telemetry service for analysis (console used for testing)
    console.error(`Failed to collect dataset [${code}]: ${message}`);
    
		throw error; // Re-throw to let caller handle it
  }
}
📘

Android Runtime Permissions

Important: For Android, ensure you request the necessary runtime permissions before initiating the data collection process. Modules that require dangerous permissions will not collect data without prior user authorization.

For detailed permission requirements per module, refer to the Android SDK documentation.


Step 4: Upload Dataset (Testing Only)

🚧

Production Environment Notice

In a production environment, datasets must only be uploaded via your organization's proxy server.

The following code snippet is provided for testing and integration purposes only:

async function uploadDataset(dataset: string): Promise<void> {
  const AUTH_KEY = 'YOUR_AUTH_KEY';
  const REFERENCE_NUMBER = 'YOUR_REFERENCE_NUMBER';
  const SERVER_URL = 'YOUR_SERVER_URL';

  const response = await fetch(`${SERVER_URL}/api/v1/datasets`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${AUTH_KEY}`,
    },
    body: JSON.stringify({
      referenceNumber: REFERENCE_NUMBER,
      dataset: dataset,
    }),
  });

  if (!response.ok) {
    throw new Error(`Upload failed: ${response.statusText}`);
  }

  console.log('Dataset uploaded successfully');
}

Next Steps

After successfully integrating the SDK, proceed with the following steps to fully utilize the Credolab platform:

  1. Set Up Your Reverse Proxy — Configure secure dataset transmission from your mobile app to Credolab.

  2. Upload Your Dataset — Once your server is configured, upload datasets using your server address.

  3. Retrieve Dataset Insights — Analyze the collected data to generate actionable insights.

  4. Perform TruValidate Fraud Check (formerly Iovation) — Assess risk based on device and transaction details.


Support

If you have any questions or require assistance, please contact your Credolab Customer Success Manager or reach out to our support team.