Instrukcja integracji android

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 gradle.build.
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

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.

Jeżeli potrzebujesz więcej informacji na powyższy temat skontaktuj się z nami: support@salesmanago.com +48 533 600 808
Luty 02 2024 Marzec 12 2024