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 StartEnsure you have obtained a token, server URL, and auth key from your Credolab Customer Success Manager.
Requirements
| Platform | Minimum Version |
|---|---|
| Capacitor | 7.0.0 or higher |
| iOS | 11.0 or higher |
| Android API | 21 or higher |
Iovation Module Requirements
- If the iOS Iovation plugin is used, the minimum supported iOS version is
15.0or higher.- If the Android Iovation plugin is used, the minimum supported Android API version is
26or higher.
Available Modules
Core Module (Mandatory)
| Package | Description |
|---|---|
@credolab/capacitor-core | Core module for data collection orchestration |
Android Optional Modules
| Package | Permissions |
|---|---|
@credolab/capacitor-android-account | Runtime permissions |
@credolab/capacitor-android-audio | Runtime permissions |
@credolab/capacitor-android-calendar | Runtime permissions |
@credolab/capacitor-android-calllog | Runtime permissions |
@credolab/capacitor-android-contact | Runtime permissions |
@credolab/capacitor-android-guard | No permissions required |
@credolab/capacitor-android-images | Runtime permissions |
@credolab/capacitor-android-iovation | Normal permissions |
@credolab/capacitor-android-sms | Runtime permissions |
@credolab/capacitor-android-telephony | Runtime permissions |
@credolab/capacitor-android-video | Runtime permissions |
iOS Optional Modules
| Package | Permissions |
|---|---|
@credolab/capacitor-ios-application | No permissions required |
@credolab/capacitor-ios-calendar-events | Runtime permissions |
@credolab/capacitor-ios-calendar-reminders | Runtime permissions |
@credolab/capacitor-ios-contact | Runtime permissions |
@credolab/capacitor-ios-iovation | No permissions required |
@credolab/capacitor-ios-location | Runtime permissions |
@credolab/capacitor-ios-media | Runtime permissions |
@credolab/capacitor-ios-music | Runtime permissions |
@credolab/capacitor-ios-telephony | No 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
NoteOnly install the modules that align with your application's permission requirements.
Note - iOS Application moduleTo integrate the
IosApplicationModule, you need to add URL schemes to theInfo.plistfile 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 forlibrary_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 syncStep 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 PermissionsImportant: 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 NoticeIn 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:
-
Set Up Your Reverse Proxy — Configure secure dataset transmission from your mobile app to Credolab.
-
Upload Your Dataset — Once your server is configured, upload datasets using your server address.
-
Retrieve Dataset Insights — Analyze the collected data to generate actionable insights.
-
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.
Updated about 1 month ago
