ஃபயர்பேஸ் நிகழ்நேர தரவுத்தள அடாப்டர்
tracelet_firebase தொகுப்பு உங்கள் பின்னணி இருப்பிடங்களை நேரடியாக Firebase Realtime Database (RTDB) உடன் ஒத்திசைக்க தடையற்ற, டிராப்-இன் அடாப்டரை வழங்குகிறது — 100% சேவையகமற்ற, கிளவுட் செயல்பாடுகள் இல்லை
நிறுவல்
உங்கள் pubspec.yaml இல் அடாப்டரைச் சேர்க்கவும்:
flutter pub add tracelet_firebaseஇந்த அடாப்டர் firebase_core மற்றும் firebase_auth ஆகியவற்றைப் பயன்படுத்துகிறது. உங்கள் Flutter பயன்பாட்டை Firebase க்காக உள்ளமைக்க வேண்டும் (flutterfire configure ஐப் பயன்படுத்தி) மற்றும் ஒரு நிகழ்நேர தரவுத்தளத்தை ஃபயர்பேஸ் கன்சோலில் உருவாக்கவும்.
இது எப்படி வேலை செய்கிறது
Firestore SDK ஒருங்கிணைப்பைப் போலன்றி, இந்த அடாப்டர் இல்லை தனியான எழுதும் பாதையைத் திறக்காது. இது ட்ரேஸ்லெட்டின் பேட்டரி-திறனுள்ள நேட்டிவ் HTTP ஒத்திசைவு இயந்திரத்தில் செருகப்படுகிறது: buildHttpConfig ஆனது உங்கள் RTDB இன் ரெஸ்ட் எண்ட்பாயிண்டில் (<database>/<path>.json) HttpConfig ஐ உருவாக்குகிறது, ?auth= என Firebase Auth ID டோக்கன் மூலம் அங்கீகரிக்கப்பட்டது.
நேட்டிவ் இன்ஜினில் ஒத்திசைவு இயங்குவதால், ஆப்ஸ் ஃபோர்ஸ்-கிட் இருக்கும்போது** அதிவேக பேக்ஆஃப் மற்றும் ஆஃப்லைன் வரிசையுடன் தொகுப்புகள் பதிவேற்றப்படும். ஒரு டோக்கன் காலாவதியாகி, RTDB 401க்குத் திரும்பும்போது, configureTokenRefresh ஆனது Firebase ID டோக்கனை வெளிப்படையாகப் புதுப்பித்து - முன்புறத்தில் மற்றும் ஹெட்லெஸ் பேக்ரவுண்ட் ஐசோலேட்டில் - மீண்டும் முயற்சிக்கிறது.
அமைவு & கட்டமைப்பு
Firebase ஐ துவக்கவும்
Tracelet ஐ அழைப்பதற்கு முன் உங்கள் main.dart இல் Firebase ஐ துவக்கவும்:
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}டோக்கன் புதுப்பிப்பை உள்ளமைக்கவும் & HTTP கட்டமைப்பை உருவாக்கவும்
configureTokenRefresh() ஐ ஒருமுறை அழைக்கவும், பின்னர் உங்கள் RTDB பாதைக்கு HttpConfig ஐ உருவாக்கி அதை Tracelet.ready க்கு அனுப்பவும்:
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:tracelet_firebase/tracelet_firebase.dart';
import 'package:tracelet/tracelet.dart';
// 1. Your Realtime Database URL (from FirebaseOptions).
final databaseUrl = Firebase.app().options.databaseURL;
// 2. Keep the Firebase ID token fresh in the background (resolves 401s).
await TraceletFirebase.configureTokenRefresh();
// 3. Get the signed-in user's id for a per-user write path.
final uid = FirebaseAuth.instance.currentUser?.uid ?? 'anonymous_device';
// 4. Build the native HTTP config for RTDB.
final httpConfig = await TraceletFirebase.buildHttpConfig(
databaseUrl: databaseUrl!, // e.g. https://my-project-default-rtdb.firebaseio.com
path: 'locations/$uid', // secure this path in your RTDB rules
// autoSync: true, batchSync: true, maxBatchSize: 250 are the defaults
);
// 5. Start Tracelet with the adapter's HTTP config.
await Tracelet.ready(Config(
geo: const GeoConfig(distanceFilter: 50),
http: httpConfig,
));
await Tracelet.start();பாதுகாப்பான விதிகளுக்கு எதிராக எழுதுவது வெற்றிபெற பயனர் அங்கீகரிக்கப்பட வேண்டும். உங்களிடம் இன்னும் உண்மையான உள்நுழைவு இல்லை என்றால், சோதனை செய்யும் போது uid ஐப் பெற FirebaseAuth.instance.signInAnonymously() போதுமானது.
தனிப்பயன் மெட்டாடேட்டாவை இணைக்கிறது
வணிகத் தரவுகளுடன் (எ.கா. order_id அல்லது trip_id) ஒவ்வொரு இருப்பிடத்தையும் குறியிட, setRouteContext() ஐப் பயன்படுத்தவும் — இது SQLite வரிசையின் மூலம் ஒவ்வொரு இடத்திலும் பயணிக்கிறது மற்றும் RTDB பேலோடில் சேர்க்கப்பட்டுள்ளது:
await Tracelet.setRouteContext(RouteContext(
taskId: 'order_123',
custom: {'trip_id': 'trip_456'},
));பாதுகாப்பு விதிகள்
உங்கள் நிகழ்நேர தரவுத்தளத்தைப் பாதுகாக்கவும், எனவே அங்கீகரிக்கப்பட்ட பயனர்கள் தங்கள் இருப்பிடப் பாதையில் மட்டுமே எழுத முடியும்:
{
"rules": {
"locations": {
"$uid": {
".read": "auth != null && auth.uid === $uid",
".write": "auth != null && auth.uid === $uid"
}
}
}
}