Flutter SDK - Inizializzazione dell'SDK
Requisiti
Section titled Requisiti- Flutter
3.41o successivo (Dart SDK^3.0.0). - Un backend OpenReplay
v1.26.0o successivo. I backend meno recenti non supportano i frame: gli eventi vengono comunque registrati, ma lo schermo no.
Il pacchetto non ha alcuna dipendenza pub — il protocollo di trasmissione, il batching, gzip e multipart sono tutti implementati in Dart, e tutto ciò che è nativo passa attraverso un unico platform channel.
Installazione
Section titled Installazioneflutter pub add openreplay
Oppure aggiungilo al tuo pubspec.yaml:
dependencies:
openreplay: ^1.0.9
Inizializzazione
Section titled InizializzazioneDevi passare la projectKey a start(). Puoi ottenere questo valore dalla dashboard di OpenReplay in ‘Preferences > Projects’.
Aggiungere il codice di tracciamento
Section titled Aggiungere il codice di tracciamentoRacchiudi la tua app in OpenReplayWidget, quindi avvia il tracker. Il wrapper è obbligatorio: fornisce il repaint boundary da cui vengono acquisiti i frame, quindi senza di esso non viene registrato nulla.
import 'package:flutter/material.dart';
import 'package:openreplay/openreplay.dart';
void main() {
runApp(const OpenReplayWidget(child: MyApp()));
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
await OpenReplay.instance.start(
projectKey: 'YOUR_PROJECT_KEY',
// not required if you're using our SaaS version
serverUrl: 'https://your.instance.com/ingest',
);
});
}
@override
Widget build(BuildContext context) => MaterialApp(
// records screen transitions
navigatorObservers: [ORNavigatorObserver()],
home: const HomePage(),
);
}
start() può essere chiamato in sicurezza prima del primo frame — l’acquisizione inizia solo dopo che OpenReplayWidget è stato disposto nel layout.
Configurare il listener di navigazione
Section titled Configurare il listener di navigazioneAggiungi ORNavigatorObserver al tuo MaterialApp (o CupertinoApp, o a qualsiasi Navigator) in modo che le route inserite e rimosse compaiano nella timeline del replay:
MaterialApp(
navigatorObservers: [ORNavigatorObserver()],
// ...
)
Le route vengono segnalate tramite route.settings.name. Le route senza nome ripiegano sulla loro posizione nello stack (route/2), perciò assegnare un nome alle route rende le timeline molto più leggibili.
Sanificare i dati
Section titled Sanificare i datiConsulta come sanificare i dati nei replay Flutter per maggiori dettagli.
Opzioni di inizializzazione
Section titled Opzioni di inizializzazioneLe opzioni vengono passate a start() come OROptions:
await OpenReplay.instance.start(
projectKey: 'YOUR_PROJECT_KEY',
options: const OROptions(
logs: false,
targetLongEdge: 1080,
),
);
crashes: boolAcquisisce gli errori Dart. I crash nativi richiedono comunque un reporter nativo. Valore predefinito:true.analytics: boolAcquisisce tocchi, swipe, schermate e input. Valore predefinito:true.performances: boolAcquisisce CPU, memoria, batteria e stato termico. Valore predefinito:true.logs: boolAcquisisce l’output didebugPrint. Valore predefinito:true.screen: boolAbilita l’acquisizione dei frame. Valore predefinito:true.screenshotBatchSize: ScreenshotBatchSizeFrame tenuti in buffer prima che un batch venga impacchettato e caricato —low(10),normal(20) oppurehigh(30). Valore predefinito:normal.targetLongEdge: intLato più lungo di un frame acquisito, in pixel. Limita il costo per frame in modo che non vari con le dimensioni dello schermo. Valore predefinito:720.dedupeFrames: boolSalta i frame i cui pixel sono identici, byte per byte, a quelli del frame precedente. La riproduzione non ne risente — il player mostra l’ultimo snapshot corrispondente o precedente all’istante corrente. Valore predefinito:true.maskPlatformViews: boolCopre le platform view (WebView, mappe, anteprima della fotocamera) con un segnaposto. Vengono renderizzate in layer nativi che Flutter non può rileggere, quindi senza questa opzione appaiono vuote. Valore predefinito:true.wifiOnly: boolRiservata; non ancora applicata. Valore predefinito:true.debugLogs: boolAbilita il logging interno dell’SDK. Valore predefinito:false.debugImages: boolSalva i frame acquisiti per il debug. Valore predefinito:false.
Sono disponibili due preset: OROptions.defaults (tutte le opzioni sopra elencate) e OROptions.defaultDebug (lo stesso, con debugLogs: true).
URL del server
Section titled URL del serverPer impostazione predefinita serverUrl punta a OpenReplay Cloud. I deployment self-hosted lo passano a start() oppure lo impostano in anticipo:
OpenReplay.instance.serverUrl = 'https://your.instance.com/ingest';
Moduli
Section titled ModuliMetodi
Section titled MetodiHai domande?
Section titled Hai domande?Se hai domande su questo processo, non esitare a contattarci su Slack .