waazi_sdk 0.2.0 copy "waazi_sdk: ^0.2.0" to clipboard
waazi_sdk: ^0.2.0 copied to clipboard

SDK Flutter pour intégrer le support client Waazi dans votre application mobile. Centre d'aide, chat en temps réel, signalement de bugs.

Waazi SDK for Flutter #

pub package License: MIT

Le SDK Flutter pour integrer le support client Waazi dans votre application mobile Android et iOS.

Fonctionnalites #

Fonctionnalite Description
Centre d'aide Articles, recherche, categories, feedback utilisateur
Chat en temps reel Conversations avec vos agents, envoi d'images, indicateur de frappe
Bug Reporting Shake to report, capture d'erreurs automatique, screenshots
Notifications push Integration FCM native
Dark mode S'adapte au theme de votre app (clair/sombre)
Theming Couleurs et branding configures depuis le dashboard Waazi

Prerequis #

  • Flutter >= 3.16.0
  • Dart >= 3.0.0
  • Android : minSdkVersion 21, compileSdkVersion 35
  • iOS : iOS 13+
  • Un compte Waazi et une publishable key

Installation #

Ajoutez le package dans votre pubspec.yaml :

dependencies:
  waazi_sdk: ^0.1.0

Puis lancez :

flutter pub get

Configuration Android #

Dans android/app/build.gradle, assurez-vous d'avoir :

android {
    compileSdkVersion 35

    defaultConfig {
        minSdkVersion 21
    }
}

Configuration iOS #

Dans ios/Podfile, assurez-vous d'avoir :

platform :ios, '13.0'

Demarrage rapide #

1. Initialiser le SDK #

import 'package:flutter/material.dart';
import 'package:waazi_sdk/waazi_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Waazi.initialize(
    publishableKey: 'pk_live_waazi_xxxxxxxx',
  );

  runApp(
    WaaziOverlay(child: MyApp()),
  );
}

WaaziOverlay enveloppe votre MaterialApp et affiche automatiquement un bouton flottant pour ouvrir le support.

2. Identifier l'utilisateur #

Appelez identify apres le login de votre app pour associer les conversations a l'utilisateur :

await Waazi.identify(
  userId: 'user_123',
  email: 'amadou@example.com',
  name: 'Amadou Diallo',
  phone: '+225 07 00 00 00',
);

3. Ouvrir le support #

// Messenger complet (accueil + messages + centre d'aide)
Waazi.showMessenger(context);

// Centre d'aide uniquement
Waazi.showHelpCenter(context);

// Nouvelle conversation avec message pre-rempli
Waazi.showNewConversation(context, initialMessage: "J'ai un probleme avec...");

Dark mode #

Le widget Waazi s'adapte au theme de votre app. Passez le brightness via WaaziOverlay :

WaaziOverlay(
  brightness: isDark ? Brightness.dark : Brightness.light,
  child: MaterialApp(
    themeMode: isDark ? ThemeMode.dark : ThemeMode.light,
    theme: ThemeData.light(),
    darkTheme: ThemeData.dark(),
    home: MyHomePage(),
  ),
)

Si brightness n'est pas specifie, le widget suit le theme de l'app hote.

Bug Reporting #

// Activer le shake to report (secouer le telephone pour signaler un bug)
Waazi.enableShakeToReport();

// Capture automatique des erreurs non gerees
WaaziErrorCapture.enable();

// Ajouter du contexte aux rapports de bugs
Waazi.setContext('screen', 'checkout');
Waazi.setContext('cartTotal', 15000);

// Reporter un bug manuellement
await Waazi.reportBug(description: 'Le bouton ne fonctionne pas');

Notifications push (FCM) #

Prerequis : configurez Firebase dans votre app et fournissez vos credentials Firebase sur votre dashboard Waazi.

import 'package:firebase_messaging/firebase_messaging.dart';

// 1. Creer le channel Android (a appeler une fois au demarrage)
await Waazi.setupPushChannel();

// 2. Enregistrer le token FCM
final token = await FirebaseMessaging.instance.getToken();
if (token != null) {
  await Waazi.registerPushToken(token);
}

// 3. Re-enregistrer si le token change
FirebaseMessaging.instance.onTokenRefresh.listen((newToken) {
  Waazi.registerPushToken(newToken);
});

// 4. Gerer le tap sur une notification (app en background)
FirebaseMessaging.onMessageOpenedApp.listen((message) {
  if (Waazi.isWaaziPush(message)) {
    Waazi.handlePushMessage(message);
  }
});

// 5. Gerer le cas ou l'app est ouverte depuis une notification (app fermee)
final initialMessage = await FirebaseMessaging.instance.getInitialMessage();
if (initialMessage != null && Waazi.isWaaziPush(initialMessage)) {
  Waazi.handlePushMessage(initialMessage);
}

Event tracking #

Envoyez des evenements personnalises pour suivre le comportement utilisateur :

Waazi.trackEvent('purchase', metadata: {
  'amount': 15000,
  'currency': 'XOF',
});

Configuration avancee #

await Waazi.initialize(
  publishableKey: 'pk_live_waazi_xxxxxxxx',
  config: WaaziConfig(
    apiUrl: 'https://api.custom-domain.com', // pour self-host
    enableHelpCenter: true,
    enableMessaging: true,
    enableBugReport: true,
    fabPosition: WaaziPosition.bottomLeft, // position du bouton flottant
    locale: 'fr', // langue (fr, en)
  ),
);

Personnalisation du launcher #

Ajustements simples via WaaziConfig #

await Waazi.initialize(
  publishableKey: 'pk_live_waazi_xxxxxxxx',
  config: WaaziConfig(
    fabSize: 48,              // taille du bouton (defaut: 56)
    fabIcon: Icons.support,   // icone custom (defaut: chat_bubble_rounded)
    fabMargin: 16,            // marge depuis le bord (defaut: 24)
    fabElevation: 4,          // ombre (defaut: 8)
    fabPosition: WaaziPosition.bottomLeft,
    showLauncher: true,       // false pour masquer le bouton
  ),
);

Surcharge du theme #

Surchargez les couleurs et la police du widget Waazi :

WaaziOverlay(
  theme: WaaziThemeData(
    primaryColor: Colors.indigo,
    fontFamily: 'Poppins',
  ),
  child: MyApp(),
)

Launcher entierement custom #

Remplacez le bouton flottant par votre propre widget :

WaaziOverlay(
  launcher: (unreadCount, onTap) => FloatingActionButton(
    onPressed: onTap,
    backgroundColor: Colors.indigo,
    child: Badge(
      isLabelVisible: unreadCount > 0,
      label: Text('$unreadCount'),
      child: Icon(Icons.headset_mic),
    ),
  ),
  child: MyApp(),
)

Pas de launcher — declenchement custom #

// Dans WaaziConfig
await Waazi.initialize(
  publishableKey: 'pk_...',
  config: WaaziConfig(showLauncher: false),
);

// Puis enveloppez comme d'habitude
WaaziOverlay(child: MyApp())

// Ouvrir depuis n'importe quel bouton de votre app
ElevatedButton(
  onPressed: () => Waazi.showMessenger(context),
  child: Text('Aide'),
)

Deconnexion #

Au logout de votre app, appelez logout pour dissocier l'utilisateur :

await Waazi.logout();

Exemple #

Un projet d'exemple complet est disponible dans le dossier example/.

cd example
flutter run

Support #

Licence #

MIT - voir le fichier LICENSE pour plus de details.

Developpe par Kreezus.

0
likes
0
points
35
downloads

Publisher

verified publisherkreezus.com

Weekly Downloads

SDK Flutter pour intégrer le support client Waazi dans votre application mobile. Centre d'aide, chat en temps réel, signalement de bugs.

Homepage
Repository (GitLab)
View/report issues

License

unknown (license)

Dependencies

cached_network_image, connectivity_plus, device_info_plus, dio, firebase_messaging, flutter, flutter_markdown, image_picker, package_info_plus, screenshot, shake, shared_preferences, socket_io_client, url_launcher, uuid

More

Packages that depend on waazi_sdk