Skip to Content
クイックスタート (2 分)

⚡ 10 分間のクイックスタート

高度に最適化された事前構築された構成プロファイルを使用して、アプリ内でバックグラウンド追跡を即座に実行できます。

AI によるセットアップをご希望ですか? セットアップ プロンプトをコピーし、Claude、ChatGPT、Cursor、またはプロジェクト内で動作している AI コーディング エージェントに貼り付けます。この Web サイトから最新のドキュメントを取得し、アプリに関するいくつかの質問 (ユースケース、バッテリーの目標、バックエンドの同期、コンプライアンスのニーズなど) を尋ね、Tracelet を自動的にインストールして構成します。

1.Traceletをインストールする

flutter pub add tracelet

2. プラットフォーム権限を追加する

iOS セットアップ (ios/Runner/Info.plist) Apple がアプリを拒否したり、バックグラウンド タスクを強制終了したりしないように、使用方法の説明とバックグラウンド モードを明示的に定義する必要があります。

<key>NSLocationWhenInUseUsageDescription</key> <string>We need your location to track your route.</string> <key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>We need background location to record your route even when the app is closed.</string> <key>NSMotionUsageDescription</key> <string>Motion detection allows battery-efficient tracking by pausing GPS when stationary.</string> <key>UIBackgroundModes</key> <array> <string>location</string> <string>fetch</string> </array>

Android セットアップ (android/app/src/main/AndroidManifest.xml) Tracelet は、コンパイルされたアプリに必要なすべての権限 (ACCESS_FINE_LOCATIONACCESS_BACKGROUND_LOCATIONFOREGROUND_SERVICEACTIVITY_RECOGNITION など) を自動的に挿入します。 マニフェストに手動で追加する必要はありません。

オプションの権限を削除したい場合 (たとえば、モーション検出が必要ない場合)、Android マニフェスト マージを使用して強制的に削除できます。どの権限が必須で、どれがオプションであり、それらを削除する正確な方法に関する完全なガイドについては、Android プラットフォームのセットアップ を参照してください。

3. 初期化と追跡

事前設定されたバランスプロファイルを使用してTraceletを開始します。これは、ユーザーが移動しているときはアクティブに追跡し、静止しているときは GPS の電源を完全にオフにしてバッテリーを節約する完璧なデフォルトです。このコードは ヘッドレス タスクも登録するため、ユーザーがアプリをスワイプしても追跡は問題なく継続されます。

import 'dart:io'; import 'package:flutter/material.dart'; import 'package:tracelet/tracelet.dart'; // 1. Define a top-level Headless Task to handle events when the app is killed @pragma('vm:entry-point') void headlessTask(HeadlessEvent event) { print('[Headless] Event received while app is killed: ${event.name}'); } void main() async { WidgetsFlutterBinding.ensureInitialized(); // 2. Register the headless task BEFORE runApp! Tracelet.registerHeadlessTask(headlessTask); // 3. Request permissions required for background tracking natively via Tracelet if (Platform.isAndroid) { await Tracelet.requestNotificationAuthorization(); // Required for Android 13+ Foreground Service await Tracelet.requestMotionAuthorization(); // Required for Motion Detection heuristics } final authStatus = await Tracelet.requestLocationAuthorization(); if (authStatus == AuthorizationStatus.deniedForever) { print("Permissions denied!"); return; } // 4. (Optional) Mitigate Aggressive OEM Battery Managers (Xiaomi, Huawei, etc.) if (Platform.isAndroid) { final health = await Tracelet.getSettingsHealth(); if (health['isAggressiveOem'] == true) { await Tracelet.showPowerManager(); // Prompts user to whitelist the app } } // 5. Listen to real-time location events Tracelet.onLocation((location) { print('[Tracelet] Location: ${location.coords.latitude}, ${location.coords.longitude}'); }); // 6. Configure Tracelet with the Balanced Profile and Notification settings await Tracelet.ready(Config.balanced( url: 'https://api.your-server.com/locations', headers: {'Authorization': 'Bearer YOUR_TOKEN'}, startOnBoot: true, stopOnTerminate: false, // Ensures tracking continues when app is swiped away android: AndroidConfig( foregroundService: ForegroundServiceConfig( contentTitle: "Background Tracking", contentText: "We are tracking your location securely.", notificationIcon: "mipmap/ic_launcher", ), ), )); // 7. Start tracking! await Tracelet.start(); runApp(MyApp()); }

それでおしまい! Tracelet は、バックグラウンド実行、モーション検出ヒューリスティック、オフライン SQLite キャッシュ、およびネットワーク同期を完全に単独で自動的に処理するようになりました。