SilentShield

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.

npmbash
# Early access — request the package via [email protected]
# (npm release to follow). Peer dependency:
npm install react-native-webview

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

ContactForm.tsxtsx
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

PropTypeRequiredDescripción
apiKeystringSíSu clave API de SilentShield
baseUrlstringSíURL base de la API de SilentShield
onVerdict(result) => voidSíCallback con el resultado del veredicto
onError(error) => voidNoCallback de error
onReady() => voidNoSe llama cuando el widget se ha cargado
langstringNoCódigo de idioma (predeterminado: "en")
zeroPiibooleanNoActiva el modo Zero-PII (sin fingerprinting)
theme"light" | "dark" | "auto"NoTema del widget
invisiblebooleanNoOculta 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():

LoginScreen.tsxtsx
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.

CheckoutScreen.tsxtsx
<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.