Guide d’intégration Dart/Flutter
Ce guide vous accompagne dans l’intégration du SDK Dart Mon SMS PRO dans vos applications Flutter. Notre SDK offre une couverture complète de l’API avec support du stockage local via Hive.
Installation
Ajoutez le package à votre pubspec.yaml :
dependencies:
mon_sms_pro: ^0.2.1Puis exécutez :
flutter pub getVous pouvez également utiliser flutter pub add mon_sms_pro ou dart pub add mon_sms_pro pour ajouter la dépendance automatiquement.
Configuration de la sécurité
Pour stocker votre clé API de manière sécurisée, utilisez le package flutter_dotenv :
flutter pub add flutter_dotenvCréez un fichier .env à la racine de votre projet :
API_KEY="your_api_key"
COMPANY_ID="your_company_id"Ajoutez le fichier .env à vos assets dans pubspec.yaml :
flutter:
assets:
- .envN’oubliez pas d’ajouter .env à votre .gitignore pour éviter de committer votre clé API.
Chargez les variables d’environnement dans votre fonction main :
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await dotenv.load(fileName: ".env");
runApp(const MyApp());
}Initialisation du SDK
Créez une instance du SDK dans un fichier dédié :
import 'package:mon_sms_pro/mon_sms_pro.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
final sms = MonSMSPRO(
apiKey: dotenv.env['API_KEY'] ?? "",
companyId: dotenv.env['COMPANY_ID'],
);Le paramètre companyId est optionnel. S’il est fourni, il sera automatiquement injecté dans tous les appels liés à l’entreprise (contacts, groupes, campagnes, senders, transactions, etc.), vous n’aurez plus besoin de le passer manuellement à chaque appel.
Le SDK utilise Dio pour les requêtes HTTP. Toutes les méthodes retournent un ApiResponseModel<T> avec les propriétés success, data et error.
Format de réponse
Toutes les méthodes retournent un objet ApiResponseModel<T> :
final response = await sms.otp.get(phoneNumber: '0701020304');
if (response.success) {
final otp = response.data;
print('Token: ${otp?.token}');
} else {
print('Erreur: ${response.error}');
}Stockage local avec Hive (optionnel)
Si vous souhaitez utiliser Hive pour le cache local :
flutter pub add hive_ce hive_ce_flutterInitialisez Hive dans votre fonction main :
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:mon_sms_pro/hive.dart';
import 'package:hive_ce_flutter/hive_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Hive.initFlutter();
await initHiveAdapters();
await dotenv.load(fileName: ".env");
runApp(const MyApp());
}Modules disponibles
| Module | Description |
|---|---|
sms.auth | Authentification et vérification API |
sms.otp | Envoi et vérification OTP |
sms.user | Gestion des utilisateurs |
sms.company | Gestion des entreprises |
sms.campaign | Envoi de campagnes SMS |
sms.contact | Gestion des contacts |
sms.group | Gestion des groupes de contacts |
sms.sender | Gestion des Sender IDs |
sms.senderTransfer | Transfert de Sender IDs |
sms.transaction | Transactions et paiements |
sms.offer | Offres de crédits |
sms.device | Gestion des appareils |
sms.ai | Optimisation de messages par IA |
sms.challenges | Challenges (gamification) |
sms.dailyTasks | Tâches quotidiennes (gamification) |
sms.follower | Le Rezo (abonnés) |
Exemple d’utilisation
import 'package:mon_sms_pro/mon_sms_pro.dart';
final sms = MonSMSPRO(
apiKey: 'YOUR_API_KEY',
companyId: 'YOUR_COMPANY_ID', // optionnel, auto-injecté dans les appels
);
// Envoyer un OTP
Future<void> sendOTP() async {
final response = await sms.otp.get(
phoneNumber: '0701020304',
length: 6,
mode: 'NUMERIC',
);
if (response.success) {
print('OTP envoyé, token: ${response.data?.token}');
}
}
// Créer un contact
Future<void> createContact() async {
final response = await sms.contact.createSingle(
phone: '0701020304',
name: 'John Doe',
);
if (response.success) {
print('Contact créé: ${response.data?.name}');
}
}
// Envoyer une campagne
Future<void> sendCampaign() async {
final response = await sms.campaign.create(
text: 'Bonjour {name}, votre commande est prête !',
senderId: 'MonShop',
contacts: [ContactModel(phone: '0701020304')],
);
if (response.success) {
print('Campagne créée !');
}
}Prochaines étapes
Explorez les guides détaillés pour chaque module :