Zum Hauptinhalt springen
Version: Guardian v0.1.0

Transaktionen verifizieren

Rufen Sie verify() bei sicherheitssensiblen Momenten auf. Das SDK erfasst Gerätesignale, führt Attestierung durch und gibt die Risikoentscheidung des Backends zurück.

Grundlegende Verwendung

PaymentScreen.tsx
import { useGuardian } from '@surtai/guardian-rn';

function PaymentScreen() {
const { verify } = useGuardian();

const handlePayment = async () => {
try {
const result = await verify('withdrawal', 'User Payment');

if (result.allowed) {
// Mit Zahlung fortfahren
} else {
// Transaktion abgelehnt - result.riskLevel prüfen
}
} catch (error) {
// SDK-Fehler behandeln (Netzwerk, nicht initialisiert usw.)
}
};

return <Button onPress={handlePayment} title="Pay" />;
}

Kundenkontext

Setzen Sie den Kundenkontext nach der Authentifizierung Ihrer App. Dies verknüpft Gerätesignale mit einer Benutzeridentität.

const { setCustomer, clearCustomer } = useGuardian();

// Nach der Anmeldung
setCustomer('user_abc123', 'John Doe', 'john@example.com');

// Beim Abmelden
clearCustomer();

Transaktionstypen

TypAnwendungsfall
'login'Benutzeranmeldung
'signUp'Neues Konto erstellen
'deposit'Einzahlung
'withdrawal'Auszahlung

Standortüberschreibung pro Aufruf

Überschreiben Sie den collectLocation-Standard für einen einzelnen Aufruf:

// Standort für diesen Aufruf überspringen
const result = await verify('login', 'User Login', { collectLocation: false });

// Standort für diesen Aufruf anfordern
const result = await verify('withdrawal', 'User Payment', { collectLocation: true });

// Initialisierungsstandard verwenden
const result = await verify('login', 'User Login');

Die Überschreibung gilt nur einmalig - sie betrifft nur diesen einzelnen verify()-Aufruf.

Wie die Standorterfassung entschieden wird

Dashboard GPSIhr CodeErgebnis
aktivierttrue (Init oder Überschreibung)GPS erfasst
aktiviertfalse (Init oder Überschreibung)Kein GPS - Sie haben sich abgemeldet
deaktivierttrue (Init oder Überschreibung)Kein GPS - Dashboard hat es deaktiviert
deaktiviertfalse (Init oder Überschreibung)Kein GPS
info

Ihre collectLocation-Einstellung kann GPS nur ablehnen. Sie kann GPS nicht erzwingen, wenn das Dashboard es deaktiviert hat.

Verifizierungsergebnis

interface VerificationResult {
allowed: boolean; // Backend-Entscheidung - true = fortfahren
riskLevel: RiskLevel; // 'low' | 'medium' | 'high' | 'blocked' | 'unknown'
sessionId: string; // Transaktions-ID für Support-Referenz
errors?: string[]; // Backend-Fehlermeldungen, falls vorhanden
timestamp: number; // Antwortzeitstempel (ms)
metadata?: Record<string, any>; // Zusätzliche Backend-Metadaten
}

Für Details zu Risikoniveaus siehe Risikoniveaus.

Vollständiges Beispiel

App.tsx
import React, { useState } from 'react';
import { View, Button, Text, Alert } from 'react-native';
import {
GuardianProvider,
useGuardian,
type VerificationResult,
} from '@surtai/guardian-rn';

function HomeScreen() {
const { verify, setCustomer, clearCustomer, isInitialized } = useGuardian();
const [result, setResult] = useState<VerificationResult | null>(null);

const handleLogin = async () => {
setCustomer('user_123', 'Jane Doe', 'jane@example.com');

try {
const res = await verify('login', 'User Login');
setResult(res);
Alert.alert(res.allowed ? 'Approved' : 'Denied', `Risk: ${res.riskLevel}`);
} catch (e: any) {
Alert.alert('Error', e.message);
}
};

return (
<View style={{ padding: 20 }}>
<Text>SDK Ready: {isInitialized ? 'Yes' : 'No'}</Text>
<Button title="Login & Verify" onPress={handleLogin} />
<Button title="Logout" onPress={() => { clearCustomer(); setResult(null); }} />
{result && <Text>Allowed: {result.allowed ? 'Yes' : 'No'}</Text>}
</View>
);
}

export default function App() {
return (
<GuardianProvider apiKey="YOUR_API_KEY" environment="production" collectLocation={true}>
<HomeScreen />
</GuardianProvider>
);
}