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 Native | 0.72 |
| Node.js | 18 |
| Android SDK | 24 |
| Xcode | 15 |
| CocoaPods | installé |
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.
- 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/ - Déclarez la dépendance dans votre
package.json:{
"dependencies": {
"certificall-mobile-sdk-react-native": "file:./vendor/certificall-mobile-sdk-react-native-<version>.tgz"
}
} - 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>
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 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éthode | Retour | Rô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) | abonnement | Notifie chaque changement d'état réseau ; appelez remove() pour arrêter. |
getCurrentPosition() | Promise<LocationPosition> | Position courante. |
watchPosition(callback) | abonnement | Suivi de position ; remove() pour arrêter. |
getCurrentMotion() | Promise<MotionData> | Accélération et rotation courantes. |
watchMotion(callback) | abonnement | Suivi 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ôme | Cause probable et action |
|---|---|
Unable to resolve module certificall-mobile-sdk-react-native | Vé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 linked | Relancez 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 AAR | Ajoutez 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ées | Appelez les request*Permission() avant takePhoto(). |
| Caméra ou capteurs absents sur émulateur Android | Testez sur un appareil physique. |
| Chemin de projet avec des espaces | Certains scripts Pods et Expo échouent : préférez un chemin sans espace. |