# Intégration mobile

<PageBadges />

## Écran, clavier et zone de sécurité

Donnez à `FormRenderer` une zone d'écran délimitée; il possède la vue de défilement, l'évitement de clavier, le focus de champ,
et drilldown écrans à l'intérieur de cette zone. Évitez de l'envelopper dans une autre vue de défilement vertical. Utilisez
`keyboardScrollOffset` lorsqu'une superposition ou un en-tête appartenant à l'application modifie la cible visible.

Installez `react-native-safe-area-context` et enveloppez la racine de l'application dans `SafeAreaProvider` pour laisser
l'en-tête intégré inclut l'encart de la zone de sécurité supérieure. Si l'application applique déjà la zone de sécurité
rembourrage, définissez `showHeader={false}` et fournissez la navigation environnante elle-même.

## Limite hors ligne

Le binding est hors ligne parce que l'évaluation schema est locale, mais ce n'est pas une persistance ou
Utilisez `onSnapshotChange` ou `onSave` pour écrire drafts en natif plate-forme.
stockage, les restaurer via `initialSnapshot` et les enregistrements `onSubmit` validés en file d'attente pour le téléchargement.
L'application doit définir un comportement de réessai, de conflit, de chiffrement, de rétention et de suppression.

Les paquets Node.js `form0-connector-pg` et `form0-connector-sqlite` ne s'exécutent pas dans React Native.
Utilisez une base de données native de plate-forme telle que `expo-sqlite` pour les données sur l'appareil et une
application API pour le stockage à distance.

## Limite des médias

La capture de photos et de vidéos nécessite renderers personnalisé. Ces renderers possèdent les autorisations runtime, la capture,
les identificateurs locaux, les aperçus, le téléchargement en arrière-plan et le nettoyage. Gardez les identificateurs durables en forme
valeurs; ne supposez pas qu'un fichier temporaire URI restera valide lors du redémarrage de l'application.
