Flutter SDK - SDK の初期化
- Flutter
3.41以降(Dart SDK^3.0.0)。 v1.26.0以降の OpenReplay バックエンド。それより古いバックエンドはフレームのサポートを報告しません。イベントは引き続き記録されますが、画面は記録されません。
このパッケージには pub の依存関係がありません。ワイヤープロトコル、バッチ処理、gzip、マルチパートはすべて Dart で実装されており、ネイティブ処理はすべて単一のプラットフォームチャネルを経由します。
インストール
Section titled インストールflutter pub add openreplay
または、pubspec.yaml に追加します。
dependencies:
openreplay: ^1.0.9
start() に projectKey を渡す必要があります。この値は、OpenReplay ダッシュボードの ‘Preferences > Projects’ で確認できます。
トラッキングコードの追加
Section titled トラッキングコードの追加アプリを OpenReplayWidget でラップしてから、トラッカーを開始します。このラッパーは 必須 です。フレームのキャプチャ元となるリペイントバウンダリを提供するため、これがないと何も記録されません。
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() は最初のフレームより前に呼び出しても安全です。キャプチャは OpenReplayWidget のレイアウトが完了してから開始されます。
ナビゲーションリスナーのセットアップ
Section titled ナビゲーションリスナーのセットアッププッシュまたはポップされたルートがリプレイのタイムラインに表示されるように、MaterialApp(または CupertinoApp、あるいは任意の Navigator)に ORNavigatorObserver を追加します。
MaterialApp(
navigatorObservers: [ORNavigatorObserver()],
// ...
)
ルートは route.settings.name で報告されます。名前のないルートはスタック内の位置(route/2)で代用されるため、名前付きルートを使用すると、タイムラインがはるかに読みやすくなります。
データのサニタイズ
Section titled データのサニタイズ詳細については、Flutter リプレイでデータをサニタイズする方法をご覧ください。
初期化オプション
Section titled 初期化オプションオプションは OROptions として start() に渡します。
await OpenReplay.instance.start(
projectKey: 'YOUR_PROJECT_KEY',
options: const OROptions(
logs: false,
targetLongEdge: 1080,
),
);
crashes: boolDart のエラーを取得します。ネイティブクラッシュの取得には、引き続きネイティブのレポーターが必要です。デフォルト:true。analytics: boolタッチ、スワイプ、画面、入力を取得します。デフォルト:true。performances: boolCPU、メモリ、バッテリー、サーマル状態を取得します。デフォルト:true。logs: booldebugPrintの出力を取得します。デフォルト:true。screen: boolフレームのキャプチャを有効にします。デフォルト:true。screenshotBatchSize: ScreenshotBatchSizeバッチにまとめてアップロードするまでにバッファリングされるフレーム数。low(10)、normal(20)、high(30)のいずれかです。デフォルト:normal。targetLongEdge: intキャプチャされるフレームの長辺の長さ(ピクセル単位)。画面サイズによってフレームあたりのコストが変動しないように上限を設けます。デフォルト:720。dedupeFrames: boolピクセルが直前のフレームとバイト単位で完全に一致するフレームをスキップします。プレーヤーは現在時刻以前の最新のスナップショットを保持するため、再生には影響しません。デフォルト:true。maskPlatformViews: boolプラットフォームビュー(WebView、マップ、カメラプレビュー)をプレースホルダーで覆います。これらは Flutter が読み戻せないネイティブレイヤーで描画されるため、この設定がないと空白で表示されます。デフォルト:true。wifiOnly: bool予約済み。まだ適用されません。デフォルト:true。debugLogs: boolSDK 自体のログ出力を有効にします。デフォルト:false。debugImages: boolデバッグ用にキャプチャしたフレームをダンプします。デフォルト:false。
2 つのプリセットが用意されています。OROptions.defaults(上記すべて)と OROptions.defaultDebug(同じ内容で debugLogs: true を指定)です。
サーバー URL
Section titled サーバー URLserverUrl のデフォルトは OpenReplay Cloud です。セルフホストのデプロイでは、これを start() に渡すか、事前に設定します。
OpenReplay.instance.serverUrl = 'https://your.instance.com/ingest';
モジュール
Section titled モジュールご質問はありますか?
Section titled ご質問はありますか?このプロセスについてご不明な点がございましたら、お気軽に Slack までお問い合わせください。