Intégration Capacitor
Ce guide décrit l'installation du bridge Capacitor 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 | |
|---|---|
| Capacitor | 7 |
| Node.js | 18 |
| Android SDK | 24 |
| Xcode | 15 |
| CocoaPods | installé |
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-capacitor-<version>.tgz vendor/ - Déclarez la dépendance dans votre
package.json. Le nom du package estcertificall-mobile-sdk(c'est aussi le chemin d'import) :{
"dependencies": {
"certificall-mobile-sdk": "file:./vendor/certificall-mobile-sdk-capacitor-<version>.tgz"
}
} - Installez et synchronisez les plateformes natives :
npm install
npx cap sync
2. iOS
Après npx cap sync, le plugin est copié dans le projet iOS. 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>
3. Android
Après npx cap sync, le plugin est copié dans le projet Android. 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" />
4. Première photo certifiée
import { CertificallTrust } from 'certificall-mobile-sdk';
// 1. Initialisation, une fois au démarrage
await CertificallTrust.initialize({
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.requestPermissions({
permissions: ['camera', 'location', 'motion'],
});
// 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 |
|---|---|---|
initialize(options) | Promise<void> | Initialise le SDK : apiKey, baseUrl, appVersion, debugMode (optionnel). |
checkPermissions() | Promise<PermissionStatus> | État des permissions camera, location, motion, microphone. |
requestPermissions({ permissions }) | Promise<PermissionStatus> | Demande les permissions listées. |
takePhoto(options) | Promise<CertifiedPhotoResult> | Ouvre la caméra et produit une photo certifiée. Options supplémentaires : quality, width, extractExif, source (camera ou gallery). |
getDeviceSnapshot(options) | Promise<DeviceSnapshot> | Instantané de l'appareil ; includeLocation, includeMotion, includeDevMode. |
getNetworkStatus() | Promise<{ connected, connectionType }> | État réseau courant. |
startNetworkMonitoring() / stopNetworkMonitoring() | Promise<void> | Active ou arrête l'émission de l'événement networkStatusChange. |
addListener('networkStatusChange', cb) | PluginListenerHandle | Écoute les changements d'état réseau. |
getCurrentPosition() | Promise<LocationPosition> | Position courante. |
watchPosition(callback) | Promise<string> | Suivi de position ; renvoie un identifiant pour clearWatch. |
getCurrentMotion() | Promise<MotionData> | Accélération et rotation courantes. |
watchMotion(callback) | Promise<string> | Suivi des capteurs ; renvoie un identifiant pour clearWatch. |
clearWatch({ id }) | Promise<void> | Arrête un suivi de position ou de mouvement. |
startVideoRecording(options) / stopVideoRecording() | Promise<VideoResult> | Enregistrement vidéo local ; le résultat contient le chemin du fichier et sa durée. |
Dans le parcours standard, seules initialize, requestPermissions et takePhoto sont nécessaires. Les autres méthodes servent à enrichir vos propres écrans.
Une implémentation web de repli est fournie pour les fonctions de base. La photo certifiée nécessite une exécution sur iOS ou Android.
Dépannage
| Symptôme | Cause probable et action |
|---|---|
| Plugin non détecté | Relancez npm install puis npx cap sync. |
| Build iOS en erreur | Vérifiez pod install dans ios/App et la signature dans Xcode. |
| Build Android en erreur | Relancez npx cap sync android et vérifiez le SDK Android local. |
takePhoto renvoie { caseId: "0", itemId: "0" } | baseUrl sans le suffixe /certificall/. |
| Permissions refusées | Appelez requestPermissions() avant takePhoto(). |