Skip to main content

Intégration React Native

Ce guide décrit l'installation du bridge React Native du SDK Certificall et la première photo certifiée. Lisez d'abord la présentation du SDK pour la livraison, la clé API et les environnements.

Prérequis

Version minimale
React Native0.72
Node.js18
Android SDK24
Xcode15
CocoaPodsinstallé
Expo Go n'est pas supporté

Le SDK est un module natif : utilisez un development build (expo prebuild).

1. Installer le package

Le bridge est livré sous forme de tarball npm (.tgz), qui embarque les binaires natifs iOS et Android.

  1. Copiez le fichier reçu dans un dossier vendor/ de votre application :
    mkdir -p vendor
    cp /chemin/vers/certificall-mobile-sdk-react-native-<version>.tgz vendor/
  2. Déclarez la dépendance dans votre package.json :
    {
    "dependencies": {
    "certificall-mobile-sdk-react-native": "file:./vendor/certificall-mobile-sdk-react-native-<version>.tgz"
    }
    }
  3. Installez :
    npm install

Aucune configuration .npmrc ni metro.config.js particulière n'est nécessaire : un .tgz est un package npm déjà empaqueté.

2. iOS

Le podspec du SDK est détecté par l'autolinking React Native. Installez les pods :

cd ios && pod install && cd ..

Si le module n'est pas détecté, ajoutez-le manuellement dans ios/Podfile :

pod 'CertificallTrustRN', :path => '../node_modules/certificall-mobile-sdk-react-native'

Ajoutez les descriptions d'usage dans Info.plist :

<key>NSCameraUsageDescription</key>
<string>Nécessaire pour la capture de photos certifiées.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Nécessaire pour certifier la localisation de la photo.</string>
<key>NSMotionUsageDescription</key>
<string>Nécessaire pour la validation de confiance de la capture.</string>
Premier lancement sur appareil

Dans Xcode, sélectionnez votre Team dans Signing & Capabilities et vérifiez que le Bundle Identifier est unique. En cas d'échec de signature : Product > Clean Build Folder, suppression de DerivedData, puis pod install et rebuild.

3. Android

L'autolinking prend en charge le module. Si le module n'est pas détecté, enregistrez le package dans MainApplication.kt :

import com.certificall.reactnative.CertificallTrustPackage

override fun getPackages(): List<ReactPackage> =
PackageList(this).packages.apply { add(CertificallTrustPackage()) }

Android Gradle Plugin 8 et plus

Le binaire natif est livré dans le tarball (android/libs/certificall-trust-sdk-release.aar). Avec AGP 8+, un .aar local ne peut plus être déclaré par le bridge lui-même : c'est votre application qui doit l'embarquer. Ajoutez dans android/app/build.gradle :

dependencies {
implementation(files("${rootProject.projectDir}/../node_modules/certificall-mobile-sdk-react-native/android/libs/certificall-trust-sdk-release.aar"))
}

Sans cette ligne, le build échoue avec Direct local .aar file dependencies are not supported when building an AAR.

Expo prebuild

expo prebuild régénère build.gradle. Ajoutez un config plugin qui réinjecte ce bloc après chaque prebuild.

Ajoutez les permissions dans AndroidManifest.xml :

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Relancez le build :

npx react-native run-android

4. Première photo certifiée

import { CertificallTrust } from 'certificall-mobile-sdk-react-native';

// 1. Configuration, une fois au démarrage
await CertificallTrust.configure({
apiKey: '<votre clé API SDK>',
baseUrl: 'https://admin.certificall.app/certificall/', // préprod : https://dev.certificall.app/certificall/
appVersion: '1.0.0',
});

// 2. Permissions
await CertificallTrust.requestCameraPermission();
await CertificallTrust.requestLocationPermission();
await CertificallTrust.requestMotionPermission();

// 3. Capture
const result = await CertificallTrust.takePhoto({
reportToken: 'CHANTIER-2026-001', // votre référence métier
});

console.log('Certificat PDF :', result.pdfUrl);
console.log('Score de confiance :', result.score);

Le détail des paramètres et du résultat est dans la référence.

Surface de l'API

Toutes les méthodes sont exposées par l'objet CertificallTrust.

MéthodeRetourRôle
configure(options)Promise<void>Initialise le SDK : apiKey, baseUrl, appVersion, debugMode (optionnel).
requestCameraPermission()Promise<boolean>Demande l'accès à la caméra.
requestLocationPermission()Promise<string>Demande l'accès à la localisation ; renvoie l'état de la permission.
requestMotionPermission()Promise<boolean>Demande l'accès aux capteurs de mouvement.
takePhoto(options?)Promise<CertifiedPhotoResult>Ouvre la caméra et produit une photo certifiée.
getDeviceSnapshot(options?)Promise<DeviceSnapshot>Instantané de l'appareil : infos matérielles, et sur demande localisation et mouvement.
getNetworkStatus()Promise<{ connected, connectionType }>État réseau courant.
startNetworkMonitoring(callback)abonnementNotifie chaque changement d'état réseau ; appelez remove() pour arrêter.
getCurrentPosition()Promise<LocationPosition>Position courante.
watchPosition(callback)abonnementSuivi de position ; remove() pour arrêter.
getCurrentMotion()Promise<MotionData>Accélération et rotation courantes.
watchMotion(callback)abonnementSuivi des capteurs de mouvement ; remove() pour arrêter.

Dans le parcours standard, seules configure, les trois request*Permission et takePhoto sont nécessaires. Les autres méthodes servent à enrichir vos propres écrans.

Dépannage

SymptômeCause probable et action
Unable to resolve module certificall-mobile-sdk-react-nativeVérifiez le .tgz dans vendor/ et le chemin dans package.json. Supprimez node_modules, relancez npm install, puis Metro avec npm start -- --reset-cache.
CertificallTrust native module is not linkedRelancez npm install puis pod install, et faites un rebuild complet. Vérifiez que vous n'êtes pas sur Expo Go.
Podspec non détecté (iOS)Vérifiez la présence de CertificallTrustRN.podspec dans node_modules/certificall-mobile-sdk-react-native, puis pod install depuis ios/.
Direct local .aar file dependencies are not supported when building an AARAjoutez la ligne implementation(files(...)) décrite à la section Android.
Erreurs Kotlin dans CertificallTrustModule.kt (onActivityResult, currentActivity)Livraison antérieure à la 0.1.3 : demandez une version à jour du package.
takePhoto renvoie { caseId: "0", itemId: "0" }baseUrl sans le suffixe /certificall/.
Permissions refuséesAppelez les request*Permission() avant takePhoto().
Caméra ou capteurs absents sur émulateur AndroidTestez sur un appareil physique.
Chemin de projet avec des espacesCertains scripts Pods et Expo échouent : préférez un chemin sans espace.