Flutter SDK
Respondo ஆதரவு அரட்டைக்கான முற்றிலும் Dart-இல் எழுதப்பட்ட கிளையண்ட் — தொகுக்கவோ பிழைதிருத்தவோ நேட்டிவ் தளக் குறியீடு எதுவும் இல்லை.
தேவைகள்#
- Dart
>=3.4.0 <4.0.0. - Flutter
>=3.16.0(3.x வரிசை). - முற்றிலும் Dart: நேட்டிவ் பாலங்கள் இல்லை,
pod installஇல்லை, Gradle திருத்தங்கள் இல்லை. transitive சார்புகள் சாதாரண Dart தொகுப்புகளே (http, web_socket_channel, uuid).
நிறுவல்#
தொகுப்பை pub.dev இலிருந்து சேருங்கள்:
dependencies:
respondo_sdk: ^0.1.2import 'package:respondo_sdk/respondo_sdk.dart';தொடக்கமிடல்#
உங்கள் BuildContext இல்லாமலேயே SDK அரட்டைத் தாளைத் திறக்க முடியும் வகையில் Respondo.navigatorKey -ஐ உங்கள் MaterialApp-உடன் இணையுங்கள், Respondo.init-ஐ ஒரு முறை அழையுங்கள், பிறகு Respondo.open().
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:respondo_sdk/respondo_sdk.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// கோப்பு சேமிப்பு அடைவு ஹோஸ்ட் செயலியின் plugin-இலிருந்து வருகிறது; SDK தூய்மையாகவே இருக்கிறது.
final dir = await getApplicationSupportDirectory();
await Respondo.init(
RespondoConfig(
agentId: '<agent-uuid>',
channelId: '<channel-uuid>',
storageDirectory: dir.path,
),
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: Respondo.navigatorKey, // SDK அரட்டையைத் திறக்க இது அவசியம்
home: Scaffold(
body: Center(
child: FilledButton(
onPressed: () => Respondo.open(),
child: const Text('Support'),
),
),
),
);
}
}அனைத்து facade மெத்தட்களும் idempotent; init-க்கு முன்பே அழைப்பது பாதுகாப்பானது (அவை தற்காலிகமாகச் சேமித்து பிறகு மீண்டும் இயக்குகின்றன), மேலும் அவை உங்கள் செயலிக்குள் ஒருபோதும் பிழையை வீசுவதில்லை.
பயனர்களை அடையாளம் காணல்#
இயல்பாக ஒவ்வொரு பார்வையாளரும் அநாமதேயமானவர். முதல் முறை தொடங்கும்போது SDK நிலையான visitor_id ஒன்றை உருவாக்கி, அதை உள்ளூர் சேமிப்பில் வைத்திருக்கிறது; அதனால் திரும்பி வரும் பயனர் தன் உரையாடலை மீண்டும் கண்டடைகிறார். செயலியில் பொதிக்க API சாவி எதுவும் இல்லை — ஒவ்வொரு உரையாடலும், backend வழங்கி ஒவ்வொரு செய்தியிலும் முன்நகர்த்தும் உரையாடல்வாரியான session டோக்கனால் பாதுகாக்கப்படுகிறது; எனவே அநாமதேயப் பார்வையாளர் மீண்டும் அங்கீகாரம் பெறவே வேண்டியதில்லை.
உங்கள் பயனர் உள்நுழைந்ததும் identify-ஐ ஒரு முறை அழையுங்கள். இது அவரின் உண்மையான அடையாளத்தை இணைக்கிறது; அதனால் அவரின் வரலாறு சாதனங்களுக்கு இடையேயும் மறுநிறுவல்களுக்குப் பிறகும் அவரைத் தொடர்கிறது, மேலும் உங்கள் இன்பாக்ஸில் உரையாடலுக்கு அருகில் அநாமதேயப் பார்வையாளருக்குப் பதிலாக அவரின் பெயரும் மின்னஞ்சலும் தெரிகின்றன.
userHash என்பது முகவரின் identity_secret-இலிருந்து உங்கள் backend கணக்கிடும் கையொப்பம் — HMAC-SHA256(secret, userId) (userId இல்லாதபோது மின்னஞ்சல்), சிறிய எழுத்து hex ஆகக் குறியீடு செய்யப்பட்டது. இந்த ரகசியம் அடையாளம் உண்மையானது என்பதை நிரூபிக்கிறது; எனவே அது உங்கள் backend-இல் மட்டுமே இருக்க வேண்டும், செயலியுடன் ஒருபோதும் அனுப்பப்படுவதில்லை. முழு சூத்திரத்தையும் சர்வர் பக்க எடுத்துக்காட்டுகளையும் அடையாளச் சரிபார்ப்பு பக்கத்தில் பாருங்கள்.
// 1. உங்கள் சொந்த backend-இல் உள்நுழைந்து, முன்கூட்டியே கணக்கிடப்பட்ட ஹாஷைப் படியுங்கள்
// (எடுத்துக்காட்டாக, login பதிலுடன் சேர்த்துத் திரும்பும் ஒரு புலம்).
final session = await api.login(email, password);
// 2. தயாரான userHash-ஐ SDK-க்கு அனுப்புங்கள் — அதை ஒருபோதும் செயலிக்குள் கணக்கிட வேண்டாம்.
Respondo.identify(RespondoIdentity(
userId: session.userId,
email: session.email,
name: session.fullName,
userHash: session.respondoUserHash,
));
// 3. வெளியேறும்போது: session-ஐ ரத்து செய்து, புதிய அநாமதேயப் பார்வையாளராகத் தொடங்குங்கள்.
Respondo.reset();ஹாஷ் இல்லாவிட்டாலோ தவறாக இருந்தாலோ எந்தப் பிழையும் வீசப்படுவதில்லை: backend அமைதியாகவே பார்வையாளரை அநாமதேயமாக வைத்திருக்கும், அரட்டை தொடர்ந்து இயங்கும், சரியான ஹாஷ் வழங்கப்படும் வரை சாதனங்களுக்கு இடையிலான தொடர்பை மட்டும் இழப்பீர்கள். முகவருக்கு identity_secret அமைக்கப்பட்டிருந்தால் மட்டுமே சரிபார்ப்பு நடக்கும் — உருவாக்கத்தின்போது அதைக் காலியாக விடுங்கள், அப்போது userId / மின்னஞ்சல் உள்ளபடியே ஏற்கப்படும்.
கவனிக்கத்தக்க மதிப்புகளும் callback-களும்#
ஒவ்வொன்றும் broadcast Stream ஆகவும், callback setter ஆகவும், தற்போதைய மதிப்பைத் தரும் getter ஆகவும் கிடைக்கிறது.
// படிக்காதவற்றின் எண்ணிக்கைக்கான reactive stream (பேட்ஜுக்கு).
Respondo.unreadCountStream.listen((n) => setBadge(n));
// அல்லது ஒரு callback setter.
Respondo.onUnreadChanged = (n) => setBadge(n);
// இணைப்புகளையும் CTA-க்களையும் இடைமறியுங்கள்; ஹோஸ்டே URL-ஐத் திறந்தால் true திருப்புங்கள்.
Respondo.onUrlRequested = (url) {
openInAppBrowser(url);
return true;
};திரைக் கண்காணிப்பு#
முன்முனைப்பான டீஸர்களும் பக்க அளவிலான இலக்கிடலும் பொருத்திப் பார்க்க, ஒவ்வொரு navigation-இலும் தற்போதைய திரையைத் தெரிவியுங்கள். null அனுப்பினால் அது அழிக்கப்படும்; ஒவ்வொரு மாற்றத்திலும் புதிய திரைக்காக முன்முனைப்பான டீஸர் மீண்டும் மதிப்பீடு செய்யப்படுகிறது.
Respondo.setCurrentScreen('pricing');அடுத்த படிகள்#
புஷ் அறிவிப்புகளையும் அடையாளச் சரிபார்ப்பையும் சேருங்கள். முழு API பரப்பு, ஈடுபாட்டுப் பரப்புகள், சிக்கல் தீர்வு ஆகியவை pub.dev தொகுப்புப் பக்கத்தில் உள்ள Flutter SDK தொடக்க வழிகாட்டியில் விளக்கப்பட்டுள்ளன.