Projekt powstał dla klientów, którzy w swoich aplikacjach mobilnych wykorzystują framework Flutter, umożliwiający tworzenie rozwiązań wieloplatformowych. Projekt jest oficjalnie rozwijany i wspierany przez Google.
Biblioteka udostępniona w formie pluginu pozwala na integrację aplikacji z SALESmanago Mobile. Integracja polega na dodaniu pluginu z poziomu projektu jako zależność.
Zakres integracji
Integracja i synchronizacja kontaktów daje dostęp do funkcji:
- mierzenie czasu, jaki użytkownik spędza na danym ekranie w aplikacji,
- monitorowanie zdarzeń takich jak np. kliknięcia przycisku,
- obsługa powiadomień,
- przesyłanie podstawowych danych kontaktu,
- przesyłanie geolokalizacji.
Wszystkie funkcjonalności dostępne są dla użytkowników systemów Android oraz iOS.
Implementacja
Aby przeprowadzić integrację, postępuj zgodnie z instrukcjami poniżej.
1. Dodanie pluginu do projektu Flutter
W pliku pubspec.yaml dodaj zależność – plugin am_monitor_plugin
Następnie uruchom z poziomu terminala komendę, aby zainstalować plugin:
flutter pub get
2. Android
W folderze project_name/android/libsumieść bibliotekę w formacie .aar.Znajdziesz ją na stronie Developers | SALESmanago. Następnie w pliku build.gradledodaj zależności, które wykorzystuje ta biblioteka:
dependencies { api 'androidx.appcompat:appcompat:1.0.0' api 'androidx.legacy:legacy-support-v4:1.0.0' api 'androidx.media:media:1.0.0' api 'com.google.firebase:firebase-messaging:21.1.0' api 'com.google.firebase:firebase-core:18.0.3' api 'com.google.android.gms:play-services-location:16.0.0' api 'com.google.android.gms:play-services-base:16.1.0' api 'androidx.constraintlayout:constraintlayout:1.1.3' api 'com.squareup.picasso:picasso:2.5.2' api 'com.google.code.gson:gson:2.8.2' implementation(name: 'appmanagolibrary-firebase-release', ext:'aar') }
Podczas budowania aplikacji mogą pojawić się błędy mówiące o konieczności nadpisania elementów w AndroidManifest.xml. W takim przypadku wykorzystaj Manifest Merger.
3. iOS
Postępuj zgodnie z dokumentacją Integracja iOS, z wyjątkiem implementacji metod dla klasy AppDelegate. Te metody są już zawarte w pluginie.
Do poprawnego działania pluginu wymagany jest manager zawartości CocoaPods oraz odpowiednio skonfigurowany plik Podfile:
pod install
Po wykonaniu powyższej komendy potrzebne pakiety zostaną dodane do Flutter.
4. Korzystanie z funkcji pluginu
Opis działania metod, które udostępnia plugin, znajdziesz pod adresem https://pomoc.salesmanago.pl/developers/.
Importowanie klasy pluginu wraz z przykładem tworzeniem obiektu klasy pluginu:
import 'package:am_monitor_plugin/am_monitor_plugin.dart'; final _amMonitorPlugin = AmMonitorPlugin();
Zliczanie czasu spędzonego w modułach:
Ważne jest, aby metody: _amMonitorPlugin.create("simpleModuleId")
oraz _amMonitorPlugin.eventStart("simpleModuleId")
zostały wywołane zaraz na początku, na przykład w metodzie initState
widgetu.
Metoda _amMonitorPlugin.eventEnded("simpleModuleId")
powinna zostać wywołana przed przejściem do kolejnego ekranu lub przejściem aplikacji do działania w tle tak, aby poprawnie został zliczony czas spędzony w danym module.
Synchronizacja adresu e-mail i numeru telefonu:
_amMonitorPlugin.syncEmail("email@test.com") _amMonitorPlugin.syncMsisdn("+48123456789")
Zliczanie liczby metod wykonanych dla użytkownika:
_amMonitorPlugin.syncEmail("email@test.com") _amMonitorPlugin.syncMsisdn("+48123456789")
Przesyłanie zdarzeń wewnętrznych:
_amMonitorPlugin.eventCustom("u_customEvent", { "textParameterName": {"type": "text", "value": "Some tekst"}, "numberParameterName": {"type": "integer", "value": 123}, "doubleParameterName": {"type": "double", "value": 123.12}, "dateParameterName": {"type": "date", "value": DateTime.now().millisecondsSinceEpoch}, "booleanParameterName": {"type": "boolean", "value": true} }
Przesyłanie danych kontaktu:
_amMonitorPlugin.sendUserProperties({ "text": {"type": "text", "value": "Tekst"}, "howMuch": {"type": "integer", "value": 123}, "precision": {"type": "double", "value": 123.12}, "when": {"type": "date", "value": DateTime.now().millisecondsSinceEpoch}, "isItTrue": {"type": "boolean", "value": true} }
Przesyłanie geolokalizacji:
final position = await Geolocator.getCurrentPosition(); _amMonitorPlugin.sendLocation(position.latitude.toString(), position.longitude.toString());