SDK mobile Certificall
Le SDK mobile vous permet de capturer des photos et de les faire certifier depuis votre propre application iOS ou Android. Chaque photo envoyée à Certificall produit un dossier clôturé et son certificat PDF.
Le parcours repose sur deux méthodes :
takePhoto()ouvre la caméra et vous rend la photo avec les données de confiance collectées au moment de la prise. Aucun envoi n'est effectué.sendPhoto()envoie cette capture à Certificall et vous rend les identifiants du dossier et de la photo, ainsi que les liens vers l'image et le certificat.
Entre ces deux appels, votre application conserve la capture et décide quand l'envoyer. Vous pouvez l'envoyer immédiatement ou la garder pour un envoi différé, notamment lorsque le réseau revient.
Choisir votre intégration
| Application | Guide |
|---|---|
| React Native | Intégration React Native |
| Capacitor 7 | Intégration Capacitor |
| iOS en Swift ou Android en Kotlin | Intégration native |
| Paramètres, résultats, conservation et erreurs | Référence du SDK |
Les bridges React Native et Capacitor exposent le même SDK natif sur iOS et Android. La capture et l'envoi de photos nécessitent une application native : ils ne sont pas disponibles dans un navigateur.
Avec Expo, utilisez un development build et expo prebuild. Expo Go ne charge pas ce module natif.
Obtenir le SDK
Votre interlocuteur Certificall vous fournit une archive de livraison contenant les composants adaptés à votre application :
certificall-mobile-sdk-react-native-<version>.tgzpour React Native ;certificall-mobile-sdk-capacitor-<version>.tgzpour Capacitor ;CertificallTrust.xcframeworket/oucertificall-trust-sdk.aarpour une intégration native ;- le guide d'intégration et un fichier d'empreintes
SHA256SUMS.
Les packages .tgz contiennent les binaires natifs nécessaires. Leur installation est décrite dans le guide de votre framework. Vous n'avez pas besoin d'accéder à un dépôt de sources ni de configurer un registre npm privé.
Pour vérifier une empreinte communiquée par Certificall :
shasum -a 256 vendor/certificall-mobile-sdk-react-native-<version>.tgz
Clé API SDK
Le SDK utilise une clé API SDK fournie par Certificall et rattachée à votre entreprise. Les dossiers créés apparaissent dans l'espace de cette entreprise.
| Propriété | Valeur |
|---|---|
| Format | cer_sdk_<identifiant entreprise>_<valeur aléatoire> |
| Remise | La clé est affichée une seule fois à sa création. |
| Validité | Un an par défaut ; Certificall peut la désactiver ou la renouveler. |
| Limite d'appels | 1 000 requêtes par heure et par clé ; au-delà, l'envoi reçoit un statut HTTP 429. |
La clé SDK est distincte du jeton utilisé pour l'API REST. Le SDK prend en charge son utilisation lors de l'envoi ; vous n'avez pas à construire les en-têtes d'authentification.
Prévoyez un moyen de mettre à jour la clé dans votre application, par exemple par configuration distante. Le renouvellement désactive les anciennes clés de votre entreprise.
Environnements
Configurez explicitement l'environnement avec baseUrl, suffixe /certificall/ compris et terminé par / :
| Environnement | baseUrl |
|---|---|
| Production | https://admin.certificall.app/certificall/ |
| Pré-production | https://dev.certificall.app/certificall/ |
La pré-production vous permet notamment d'envoyer les photos prises avec un build de développement. Utilisez la clé fournie pour l'environnement concerné.
Une URL incorrecte peut provoquer SERVER_REJECTED, y compris lorsque le serveur répond avec une page HTML et un statut 200. Dans ce cas, conservez la capture, corrigez la configuration puis renvoyez-la.
Parcours d'une photo
Votre application
├─ Permissions et configuration du SDK
├─ takePhoto() → capture locale et données de confiance
├─ Conservation de la capture dans votre stockage
└─ sendPhoto() → Certificall
├─ Création et clôture du dossier
├─ Certificat PDF et réponse de sendPhoto()
├─ Webhook de dossier, si configuré
└─ Analyse de confiance → webhook de résultat, si configuré
- Demandez les permissions selon votre plateforme, puis configurez le SDK.
- Appelez
takePhoto()depuis votre écran de capture. Vous pouvez fournir votre référence métier (reportToken) et des métadonnées. - Conservez l'objet retourné en entier, image comprise, dans votre stockage si l'envoi doit survivre à une fermeture de l'application.
- Appelez
sendPhoto()dès la prise, dès que le réseau le permet. Une photo transmise plus de 10 minutes après sa prise porte sur son certificat le bandeau « absence de connexion internet ». - Après un envoi réussi, utilisez
caseId,itemId,imageUrletpdfUrl, et examinez les éventuelswarnings. - Récupérez le score de confiance avec le webhook de résultat d'analyse. Le score n'est pas un champ de la réponse de
sendPhoto().
Le webhook de dossier transmet le contenu du dossier à sa clôture. Les deux webhooks sont indépendants et se configurent sur votre entreprise.
Le SDK utilise la trame photo prévue pour votre entreprise. Chaque nouvelle capture envoyée crée son propre dossier ; renvoyer la même capture déjà certifiée restitue ce même dossier. Pour un parcours multi-étapes, consultez l'API et les Certilinks.
Données de confiance et contrôles d'appareil
Le SDK collecte les positions, les mouvements, les informations sur l'appareil et le réseau. Ces données sont figées à la prise : un envoi différé ne les remplace pas par les informations du moment de l'envoi.
La photo provient exclusivement de la caméra. Sur Android, le SDK utilise une application caméra préinstallée et fait transiter l'image par le cache privé de votre application, nettoyé à la fin de la capture. Sur iOS, la capture est traitée en mémoire. Le SDK ne propose pas la galerie.
Dans un build de distribution, la prise est refusée dans les cas suivants :
| Raison | Situation |
|---|---|
emulator_detected | L'appareil est un émulateur. |
developer_mode_enabled | Le mode développeur de l'appareil est détecté. |
low_battery | La batterie est sous 10 % et l'appareil n'est pas en charge. |
Ces refus remontent avec le code DEVICE_NOT_TRUSTED. Aucune option de configuration ne désactive ces contrôles.
Une donnée de confiance manquante, comme une position GPS, est signalée à l'envoi par un avertissement. Elle peut dégrader le score de confiance sans être, à elle seule, un motif de refus de la photo.
Une fois les permissions accordées, configurez le SDK dès l'ouverture de l'écran concerné. Les capteurs disposent ainsi de temps pour collecter un historique avant la capture.
Tester avec un build de développement
Le SDK détecte le type de build de votre application :
- Android : le build est de développement si l'application est
debuggable. - iOS : le simulateur et les applications signées pour le développement sont reconnus comme des builds de développement. Les distributions App Store, TestFlight et ad hoc appliquent les contrôles d'appareil.
Dans un build de développement, les contrôles d'appareil sont relâchés et la capture porte debugBuild: true. Le simulateur iOS propose une image de test, sans utiliser la galerie.
Les photos marquées debugBuild: true sont acceptées en pré-production et refusées en production, même si elles sont envoyées plus tard depuis un build de distribution. Pour la production, reprenez la photo depuis un build de distribution.
Utilisez isDebugBuild() pour vérifier le type de build. Le résultat est un booléen avec React Native et les SDK natifs, et un objet { debugBuild: boolean } avec Capacitor.