Biblioteka w formacie aar jest dostępna pod adresem: https://pomoc.salesmanago.pl/developers/
Przykład konfiguracji dla Gradle:
Aby dołączyć bibliotekę do projektu należy umieścić plik aar w katalogu libs, a
następnie zmodyfikować plik build.gradle.
Parametr ‘name’ w sekcji ‘compile’ musi być taki, jak nazwa pliku biblioteki bez rozszerzenia.
repositories { flatDir { dirs 'libs' } } dependencies { compile(name:'appmanagolibrary-release', ext:'aar') }
Dla innych narzędzi sprawdź dokumentację w jaki sposób można dodać zewnętrzne biblioteki
Lista zależności, które wykorzystuje biblioteka:
androidx.appcompat:appcompat:1.6.1 androidx.legacy:legacy-support-v4:1.0.0 androidx.media:media:1.6.0 com.google.firebase:firebase-messaging:21.1.0 com.google.android.gms:play-services-location:21.0.1 com.google.android.gms:play-services-base:18.2.0 androidx.constraintlayout:constraintlayout:2.1.4 com.squareup.picasso:picasso:2.8 com.google.code.gson:gson:2.10.1 androidx.work:work-runtime:2.7.1
Konfiguracja biblioteki
W pliku strings.xml integrowanej aplikacji należy dodać poniższe wpisy:
- appmanago_launch_time Definiuje czas odstępu pomiędzy kolejnymi użyciami modułu/funkcji po
którym uznajemy, że aplikacja została uruchomiona ponownie. Wartość podawana jest w minutach.
<string name="appmanago_launch_time">30</string>
Dla wartości 30 – kolejne użycie aplikacji zostanie zliczone w momencie, gdy po 30 minutach niekorzystania z aplikacji zostanie ona ponownie uruchomiona.
- appmanago_sync_meantime Definiuje, co jaki czas ma być wykonywana próba synchronizacji
zdarzeń, które zaszły podczas braku połączenia z Internetem i czekają na wysyłkę. Wartość podawana
jest w minutach.
<string name="appmanago_sync_meantime">360</string>
W przykładzie próby synchronizacji zdarzeń będą wywoływane co 360 minut.
- appmanago_endpoint Definiuje endpoint (Adres strony)na jaki wysyłane są zapytania.
Dla SALESmanago Mobile domyślnym jest:<string name="appmanago_endpoint">https://api.appmanago.com</string>
- appmanago_vendor_id Identyfikator vendora, można go znaleźć po zalogowaniu w systemie
APPmanago w panelu Ustawienia -> Konto. Jest to ciąg znaków identyfikujący dane konto SALESmanago Mobile
<string name="appmanago_vendor_id">VENDOR_ID</string>
- appmanago_application_id Proste ID aplikacji dodanej w systemie. Należy je utworzyć podczas
tworzenia aplikacji w APPmanago.
<string name="appmanago_application_id">APLIKACJI_SIMPLE_ID</string>
- appmanago_gps_sync_time Odstęp czasowy między automatycznym wysłaniem pozycji gps (minuty).
<string name="appmanago_gps_sync_time">1</string>
- appmanago_gps_front_available
Flaga określająca, czy lokalizacja ma być aktualizowana ciągle, czy tylko gdy aplikacja jest aktywna (0 – ciągle, 1 – tylko gdy aplikacja jest aktywna).<string name="appmanago_gps_front_available">0</string>
- appmanago_gps_accuracy
Opcja ustawiająca dokładność ustalania lokalizacji, a co za tym idzie również zużycie baterii:
– HIGH – wysoka dokładność, urządzenie ustali najdokładniejszą lokalizację,
– BALANCED – (rekomendowana) – dokładność do 100m z najlepszym stosunkiem wydajności do zużycia baterii,
– LOW – dokładność do 10km, niskie zużycie baterii,
– PASSIVE – tryb pasywny, aplikacja oczekuje na aktualizację lokalizacji przez inne aplikacje, sama nie zużywa energii na określanie jej,
(aby uniknąć rozładowania baterii, system lokalizacji ma 10-sekundowy limit czasu – jeśli w ciągu 10 sekund lokalizacja nie zostanie rozwiązana, proces zostanie anulowan
na).<string name="appmanago_gps_accuracy">HIGH</string>
Przesyłanie zdarzeń do SALESmanago Mobile
Przesyłanie zdarzeń odbywa się przez interfejs AmMonitoring. Inicjalizacja takiego obiektu wygląda jak poniżej i odbywa się w metodzie onCreate()
.
private AmMonitoring amMonitor;
amMonitor = AmMonitor.initLibrary(getApplicationContext());
Obiekty amMonitor należy tworzyć per moduł, ponieważ zawierają one logikę odpowiedzialną za mierzenie czasu przez który moduł jest używany (Activity).
Dodatkowo należy nadpisać metody onResume()
i onPause()
, które są potrzebne do mierzenia czasu spędzonego w danym module. Nazwa modułu musi być taka sama jak ta zdefiniowana na platformie SALESmanago Mobile.
@Override protected void onResume() { super.onResume(); amMonitor.eventStarted(NAZWA_MODUŁU, new AmProperties()); } @Override protected void onPause() { super.onPause(); amMonitor.eventEnded(NAZWA_MODUŁU, new AmProperties()); }
Począwszy od wersji biblioteki 3.7.0 należy dodać poniższą linię kodu do klasy Activity
dla modułu, który jest wyświetlany użytkownikowi jako pierwszy (czyli ekranu startowego):
ActivityLifecycleListener.registerActivityLifecycleCallback(CONTEXT);
gdzie CONTEXT
to kontekst aplikacji – globalny kontekst powiązany z cyklem życia aplikacji, zapewniający dostęp do zasobów i usług na poziomie całej aplikacji.
Powyższą linię kodu należy umieścić w metodzie onCreate
, najlepiej zaraz po wywołaniu metody super.onCreate(savedInstanceState)
, tak jak pokazano poniżej:
public class FirstScreenActivityClass extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityLifecycleListener.registerActivityLifecycleCallback((Application) getApplicationContext()); } }
Integracja z Firebase Cloud Messaging (FCM)
Aby dodać obsługę FCM do aplikacji należy wykonać instrukcję ze strony
Google:
https://firebase.google.com/docs/cloud-messaging/android/client
By dostać numery Server API Key i Sender ID należy zarejestrować aplikację podczas tworzenia konta. Następnie ID i API Key należy dodać do ustawień konta GCM w SALESmanago Mobile. Obie te wartości znajdziemy po zalogowaniu się do swojego projektu w konsoli Firebase, w Ustawienia -> Cloud Messaging. Należy również zintegrować projekt androidowy z FCM korzystając z gotowego narzędzia w Android Studio Tools -> Firebase -> Cloud Messaging.
Kolejnym krokiem jest dodanie uprawnień i serwisów do AndroidManifest.xml:
<service android:name="com.appmanago.lib.fcm.AmFirebaseListenerService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
Dodatkowo do metody onCreate()
należy sprawdzić obsługę Google api.
Można to wykonać jak poniżej:
if (checkPlayServices()) { amMonitor.resolveRegistrationToken(); }
A implementacja wygląda następująco:
private boolean checkPlayServices() { GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); int resultCode = apiAvailability.isGooglePlayServicesAvailable(this); if (resultCode != ConnectionResult.SUCCESS) { if (apiAvailability.isUserResolvableError(resultCode)) { apiAvailability.getErrorDialog(this, resultCode, 9000) .show(); } else { Log.i(Constants.LOG_TAG, "This device is not supported."); finish(); } return false; } return true; }
Rich notification
Istnieje możliwość dodania do powiadomienia multimediów typu zdjęcie po zaznaczeniu przy tworzeniu powiadomienia flagi “Rich content” i uzupełnieniu nowe pola. Można dostosować to do swoich potrzeb bądź używać przykładu zaimplementowanego w bibliotece SALESmanago Mobile. Domyślnie gdy wysyłamy powiadomienie z flagą rich notification z typem “jpg” bądź “png” i z adresem url do zdjęcia to zostanie ono wyświetlone pod powiadomieniem.
Aby dostosować do swoich potrzeb wyświetlanie rozbudowanych powiadomień
należy nadpisać metodę richPushNotification() w klasie PushActionExecutor.
Żeby to osiągnąć należy do AndroidManifest.xml zmienić klasę
com.appmanago.lib.fcm.AmFirebaseListenerService na na swoją klasę która wywoła zamiast
PushActionExecutor jego rozszerzeniem z nadpisaną metodą richPushNotification()
Metody wykorzystywane do monitorowania zachowań
amMonitor.eventStarted(NAZWA_MODUŁU, amProperties);
należy wywołać podczas uruchomienia modułu / (Activity) wraz z simpleId z
systemu SALESmanago Mobile. Zwykle będzie ona wołana w metodzie onResume()
, w której zacznie
liczyć czas spędzony w danym module.
amMonitor.eventEnded(NAZWA_MODUŁU, amProperties);
należy wykonać podczas zakończenia wykonania modułu (Activity). Zwykle
będzie ona wywołana w metodzie onPause()
, w której skończy liczyć czas spędzony w
module.
amMonitor.eventCustom(NAZWA_CUSTOM_EVENT, amProperties);
należy wykonać podczas przesyłania zdarzeń zewnętrznych. Zdarzenia te powinny być zdefiniowane również w systemie SALESmanago Mobile.
amMonitor.clicked(NAZWA_FUNKCJI, amProperties);
należy wykorzystać podczas uruchamiania metod, które są zmapowane na platformie SALESmanago Mobile. Jego użycie będzie zliczało ilość metod wykonanych dla danego użytkownika.
amMonitor.syncEmail(ADRES_EMAIL);
należy wykorzystać w momencie, gdy użytkownik przekazuje swój adres email. Będzie on używany jako identyfikator danego użytkownika w SALESmanago Mobile.
amMonitor.syncMsisdn(NUMER_TELEFONU);
należy wykorzystać w momencie, gdy użytkownik przekazuje swój numer telefonu.
amMonitor.sendUserProperties(MAPA_WŁAŚCIWOŚCI);
przekazuje do SALESmanago Mobile dane o użytkowniku. Jest to mapa klucz-wartość, w której można przechowywać dodatkowe informacje o użytkowniku takie jak imię, nazwisko, rozmiar buta, itp. Dane te są wykorzystywane do wysyłania personalnych powiadomień i ustawień dynamicznych segmentów.
amMonitor.sendLocation(SZEROKOŚĆ, DŁUGOŚĆ);
służy do przesyłania lokalizacji
AmExtras amExtras = amMonitor.getAmExtras(bundle) amExtras.getPayload(); amExtras.getPushType();
pozwalają odczytać payload z powiadomienia oraz jego typ. Dzięki niemu można m.in. dodać akcję, przekierować użytkownika w aplikacji, bądź wyświetlić coś jako akcję po kliknięciu w powiadomienie.