Integración con React Native
Integre SilentShield en aplicaciones React Native mediante un wrapper basado en WebView. El widget se ejecuta dentro de una WebView ligera y se comunica con su aplicación a través del puente de mensajes de React Native.
Instalación
Early Access
El paquete de React Native está actualmente en acceso anticipado — solicítalo en [email protected]; la publicación en npm llegará después. Los ejemplos siguientes muestran la API del paquete en acceso anticipado.
# Early access — request the package via [email protected]
# (npm release to follow). Peer dependency:
npm install react-native-webviewiOS: instalar CocoaPods
Tras la instalación, ejecute cd ios && pod install para vincular la dependencia nativa de WebView.
Uso del componente
La forma más sencilla de integrar SilentShield es con el componente <SilentShield />:
import { SilentShield } from '@silentshield/react-native';
function ContactForm() {
const [token, setToken] = useState<string | null>(null);
return (
<View>
{/* Your form fields */}
<TextInput placeholder="Email" />
<TextInput placeholder="Message" multiline />
{/* SilentShield widget */}
<SilentShield
apiKey="YOUR_API_KEY"
baseUrl="https://api.silentshield.io"
onVerdict={(result) => {
if (result.verdict === 'human') {
setToken(result.token);
}
}}
onError={(err) => console.error(err)}
lang="en"
theme="light"
/>
<Button
title="Submit"
onPress={() => submitForm(token)}
disabled={!token}
/>
</View>
);
}Referencia de props
| Prop | Type | Required | Descripción |
|---|---|---|---|
| apiKey | string | Sí | Su clave API de SilentShield |
| baseUrl | string | Sí | URL base de la API de SilentShield |
| onVerdict | (result) => void | Sí | Callback con el resultado del veredicto |
| onError | (error) => void | No | Callback de error |
| onReady | () => void | No | Se llama cuando el widget se ha cargado |
| lang | string | No | Código de idioma (predeterminado: "en") |
| zeroPii | boolean | No | Activa el modo Zero-PII (sin fingerprinting) |
| theme | "light" | "dark" | "auto" | No | Tema del widget |
| invisible | boolean | No | Oculta el widget y verifica mediante programación |
Uso del hook (programático)
Para la verificación invisible o flujos de interfaz personalizados, utilice el hook useSilentShield():
import { useSilentShield } from '@silentshield/react-native';
function LoginScreen() {
const { verify, reset, isReady, isVerifying, WebViewComponent } =
useSilentShield({
apiKey: 'YOUR_API_KEY',
baseUrl: 'https://api.silentshield.io',
});
const handleLogin = async () => {
const result = await verify();
if (result.verdict === 'human') {
// Submit login with result.token
}
};
return (
<View>
{/* Hidden WebView for behavior tracking */}
{WebViewComponent}
<TextInput placeholder="Email" />
<TextInput placeholder="Password" secureTextEntry />
<Button
title={isVerifying ? 'Verifying...' : 'Log In'}
onPress={handleLogin}
disabled={!isReady || isVerifying}
/>
</View>
);
}Modo invisible
En el modo invisible, la WebView se renderiza con altura y opacidad cero. El seguimiento del comportamiento se ejecuta en segundo plano y la verificación se lanza mediante programación con la función verify(). Es ideal para pantallas de inicio de sesión y procesos de pago.
<SilentShield
apiKey="YOUR_API_KEY"
baseUrl="https://api.silentshield.io"
onVerdict={handleVerdict}
invisible={true} // No visible UI
/>Recomendado: use el modo Zero-PII en móviles
Las huellas digitales del navegador recopiladas dentro de una WebView son menos fiables que en un navegador real. Recomendamos activar zeroPii={true} en las apps de React Native: así se desactiva el fingerprinting y la detección se basa por completo en señales de comportamiento.