one_viewr_flutter library

Client Flutter public d'Oneviewr CRM : identify (enregistrer un contact), track (événements), registerPushToken/unregisterPushToken (token push FCM/APNs).

Port direct de @oneviewr/js (neero-crm/sdk-js), avec les patrons d'architecture d'onex_client_plugin_flutter : façade statique unique (OneViewr), résolution d'environnement (OneViewrEnv/resolveApiBase), client REST séparé de l'état (OneViewrRestClient/ApiException), stockage local avec repli mémoire (KeyValueStore).

Surface publique normale : OneViewr — boot(), identify(), track(), registerPushToken(), unregisterPushToken(), checkInAppMessages(), ackInAppMessage(), setScreen(), answerInAppSurvey(), recordDeepLink(), deferredDeepLink(), resolveDeepLink(), reset(), plus IdentifyResult, OneViewrPlatform, PendingInAppMessage et DeepLink. Un intégrateur qui ne veut qu'identifier des contacts, envoyer des événements et afficher les messages in-app n'a besoin de rien d'autre.

Tout le reste est exporté en second rideau, pour l'hôte qui veut son propre stockage (KeyValueStore), sa propre source d'attribution d'installation (InstallAttribution, pour relayer un outil de mesure mobile), assembler son propre client REST, ou pour l'outillage/les tests — même philosophie que le fichier équivalent côté onex_client_plugin_flutter. showInAppMessage/InAppMessageWebView (src/ui/) en font partie : un hôte qui voudrait composer son propre écran autour du rendu WebView (plutôt que le Dialog/showModalBottomSheet posé par checkInAppMessages) peut les appeler directement.

Ce commentaire de bibliothèque ne fait qu'exporter (pas d'import), donc les symboles ci-dessus sont référencés en code inline (`), pas en liens dartdoc ([...]) — un lien exige que le symbole soit en réalité importé dans CE fichier, ce qu'un simple export ne fait pas.

Classes

AttributionTouch
Une visite et ses signaux marketing — la forme exacte d'AttributionTouch côté backend (com.oneviewr.crm.acquisition.dto) et de ce qu'envoie le SDK JS (neero-crm/sdk-js/src/attribution.js) : paramètres UTM, identifiants de clic publicitaires, domaine référent, chemin d'arrivée, date.
Un lien d'acquisition retrouvé (ou pas) — rendu par OneViewr.deferredDeepLink (après une installation) et OneViewr.resolveDeepLink (application déjà installée).
DeferredLinkFound
L'utilisateur est arrivé par un lien d'acquisition.
DeferredLinkLookup
Issue d'une recherche de lien différé — voir DeferredLinkSource.lookup.
DeferredLinkNone
Réponse définitive « pas de lien » : installation organique, plateforme sans mécanisme, presse-papiers vide ou refusé. On ne redemandera pas.
DeferredLinkRetryLater
Échec passager : on redemandera au prochain démarrage.
DeferredLinkSignal
Ce que la recherche d'un lien différé a trouvé : le lien d'acquisition sur lequel l'utilisateur a cliqué avant d'installer l'application.
DeferredLinkSource
Source du lien d'acquisition sur lequel l'utilisateur a cliqué avant d'installer l'application, interrogée par OneViewr.boot tant que le premier contact de l'appareil n'est pas fixé.
Lien différé lu sur l'appareil :
DeviceInstallAttribution
Origine de l'installation lue sur l'appareil :
FlutterSecureLocationStorage
flutter_secure_storage adapter for iOS Keychain and Android Keystore.
IdentifyResult
Résultat d'un identify() réussi — reprend IdentifyResponse du SDK JS (neero-crm/sdk-js/index.d.ts).
IdentityStore
Mémorise la dernière identité posée par identify(), pour que track()/ registerPushToken() n'aient pas à répéter les identifiants à chaque appel — même contrat que identity-store.js côté SDK JS (« identify once per session/login, track freely afterward », comme Segment).
InAppMessageWebView
Rendu passif d'un message in-app déjà compilé en HTML auto-porté.
InMemoryKeyValueStore
Stockage en mémoire — pour les tests, et pour le repli si le disque refuse (voir SharedPreferencesKeyValueStore).
InstallAttribution
Source de l'origine d'une installation, interrogée par OneViewr.boot tant que le premier contact de l'appareil n'est pas fixé.
InstallFound
L'installation vient d'une campagne ou d'une fiche de magasin identifiable : touch devient candidat au premier contact.
InstallLookup
Issue d'une recherche de l'origine de l'installation — voir InstallAttribution.lookup.
InstallRetryLater
Échec passager (service Google Play indisponible, réseau coupé, réponse Apple pas encore prête) : on redemandera au prochain démarrage.
InstallUnknown
Réponse définitive « rien à dire » : plateforme sans mécanisme, installation sans publicité, mécanisme non pris en charge sur cet appareil. On ne redemandera pas.
KeyValueStore
Stockage local clé → texte.
LocationSample
A position supplied by the host application.
LocationSecureStorage
Secure key storage used by the encrypted location queue.
LocationSendResult
Outcome of a location submission. It intentionally contains no position.
OneViewr
Client Flutter public d'Oneviewr CRM — port direct de @oneviewr/js (neero-crm/sdk-js), avec les patrons d'architecture d' onex_client_plugin_flutter : façade statique unique, résolution d'environnement séparée (core/environments.dart), client REST qui ne connaît ni Flutter ni l'état du paquet (transport/rest_client.dart), stockage local avec repli mémoire en cas d'erreur disque (core/key_value_store.dart).
OneViewrAttributionDebugState
Ce que le paquet a retenu de l'origine de l'installation sur cet appareil — rendu par OneViewr.debugAttributionState et OneViewr.debugSimulateInstall. Outil de développement : à afficher ou à journaliser pendant les tests, jamais à exploiter en production.
OneViewrIdentity
Identité d'un contact, telle que mémorisée après un identify() réussi.
OneViewrRestClient
Client des routes REST publiques d'Oneviewr (com.oneviewr.crm.publicapi.PublicIngestController, base /api/v1/public) : POST /identify, POST /events, PUT /push-tokens, DELETE /push-tokens/{token}, POST /deep-link/resolve.
PendingInAppMessage
Message in-app en attente, tel que renvoyé par POST /in-app-messages/pending — voir PublicInAppMessageResponse côté backend (com.oneviewr.crm.publicapi.dto).
SharedPreferencesKeyValueStore
Stockage persistant, au-dessus de shared_preferences.

Enums

DeepLinkDestinationType
Où mène un lien d'acquisition — le « type de destination » choisi par le marchand dans Oneviewr.
DeepLinkStatus
Issue de la résolution d'un lien d'acquisition par le serveur (POST /api/v1/public/deep-link/resolve). Toujours une réponse, jamais une erreur : c'est le statut qui dit si le lien a pu être retrouvé.
OneViewrEnv
Instance backend Oneviewr visée.
OneViewrPlatform
Plateforme d'un token push, transmise à OneViewr.registerPushToken.

Constants

defaultOneViewrEnv → const OneViewrEnv
Environnement retenu quand l'intégrateur n'en nomme aucun.
publicKeyHeaderName → const String
Nom de l'en-tête d'authentification du SDK public Oneviewr.

Functions

buildPublicHeaders(String publicKey, {bool hasBody = true}) → Map<String, String>
Construit les en-têtes d'une requête vers /api/v1/public/**.
resolveApiBase({OneViewrEnv? env, String? apiBase}) → String
Origine effective, résolue avec la même précédence que resolveApiBase() côté SDK JS (environments.js) : apiBase explicite > env nommé > défaut du paquet (prod).
showInAppMessage(BuildContext context, {required String html, required String displayType, required bool dismissible, String? ctaUrl, void onPresented(VoidCallback dismiss)?, ValueChanged<List<int>>? onAnswer}) → Future<String?>
Affiche un message in-app déjà compilé en HTML, dans l'un des quatre formats v1 (MODAL, BOTTOM_SHEET, BANNER, FULLSCREEN — Phase 5 du plan IN_APP).

Exceptions / Errors

ApiException
Échec d'un appel REST porté jusqu'à l'appelant.