Aller au contenu principal

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​

ApplicationGuide
React NativeIntégration React Native
Capacitor 7Intégration Capacitor
iOS en Swift ou Android en KotlinIntégration native
Paramètres, résultats, conservation et erreursRé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.

Expo

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>.tgz pour React Native ;
  • certificall-mobile-sdk-capacitor-<version>.tgz pour Capacitor ;
  • CertificallTrust.xcframework et/ou certificall-trust-sdk.aar pour 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
Formatcer_sdk_<identifiant entreprise>_<valeur aléatoire>
RemiseLa 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'appels1 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évoir le renouvellement

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 / :

EnvironnementbaseUrl
Productionhttps://admin.certificall.app/certificall/
Pré-productionhttps://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é
  1. Demandez les permissions selon votre plateforme, puis configurez le SDK.
  2. Appelez takePhoto() depuis votre écran de capture. Vous pouvez fournir votre référence métier (reportToken) et des métadonnées.
  3. Conservez l'objet retourné en entier, image comprise, dans votre stockage si l'envoi doit survivre à une fermeture de l'application.
  4. 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 ».
  5. Après un envoi réussi, utilisez caseId, itemId, imageUrl et pdfUrl, et examinez les éventuels warnings.
  6. 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.

Une photo par dossier

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 :

RaisonSituation
emulator_detectedL'appareil est un émulateur.
developer_mode_enabledLe mode développeur de l'appareil est détecté.
low_batteryLa 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.

Initialiser avant la prise

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.

Photos de développement

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.