Activitate de Laborator

1. Vom incepe prin a crea un proiect nou in Android Studio, cu un package ID ales de voi.

Note: Puteti alege atat Kotlin, cat si Java pentru rezolvarea laboratorului.

2. Utilizarea serviciului FCM(Firebase Cloud Messaging) implica existenta unui proiect configurat in Firebase, astfel:

  • Autentificati-va in Firebase(https://firebase.google.com/)
  • Dupa autentificare, accesati Firebase Console(https://console.firebase.google.com/)
  • Creati un proiect nou

  • Alegeti un nume pentru proiect
  • Accesati proiectul si alegeti din meniul Run optiunea Messaging
  • Selectati optiunea de proiect de Android

  • Completati datele pentru proiectul vostru

Note: Android package name trebuie sa fie cel pe care l-ati setat la crearea proiectului in Android Studio. Optional, puteti alege si un nume. Nu este nevoie sa completati Debug signing certificate SHA-1.

  • Inregistrati aplicatia si continuati la seciunea Download and add config file. Descarcati fisierul google-services.json si adaugati-l in proiect in directorul indicat

  • Continuati la sectiunea Add Firebase SDK si urmati indicatiile pentru a adauga dependentele necesare in proiectul vostru. Asigurati-va ca sync-ul pentru Gradle se realizeaza cu succes si finalizati crearea proiectului in Firebase

Note: Nu va fi nevoie de id("com.android.application"). Adaugarea acestui plugin va genera o eroare de Gradle. Dupa caz, poate fi nevoie sa adaugati in fisierul build.gradle.kts(Module :app), in sectiunea dependencies: implementation(libs.firebase.common.ktx) si implementation(libs.firebase.messaging.ktx) - pentru Kotlin sau implementation(libs.firebase.common) si implementation(libs.firebase.messaging) - pentru Java.

3. In proiectul creat in Android Studio, creati clasa MainActivity(daca aceasta nu este deja creata). In metoda onCreate(), vom initializa serviciul Firebase:

FirebaseApp.initializeApp(this);
Firebase.initialize(this) 

3. Pentru a putea primi notificari in aplicatia noastra, este nevoie sa cerem permisiunea utilizatorului in prealabil:

Note: Aveti o eroare la utilizarea constantei NOTIFICATION_PERMISSION_REQUEST_CODE. Aceasta trebuie definita. Gasiti valoarea sa pentru ca functia sa fie completa.


  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
      ActivityCompat.requestPermissions(
        this,
        new String[]{android.Manifest.permission.POST_NOTIFICATIONS},
        NOTIFICATION_PERMISSION_REQUEST_CODE
      );
    }
  }

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
      ActivityCompat.requestPermissions(
        this,
        arrayOf(android.Manifest.permission.POST_NOTIFICATIONS),
        NOTIFICATION_PERMISSION_REQUEST_CODE
      )
    }
  }

De asemenea, va fi nevoie sa declarati permisiunile folosite de aplicatia voastra si in AndroidManifest.xml.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

4. Pentru a putea loga primirea notificarilor, vom crea un service custom:


  public class CustomFirebaseMessagingService extends FirebaseMessagingService {}

  class CustomFirebaseMessagingService : FirebaseMessagingService() {}

Suprascrieti metoda onMessageReceived() si logati primirea de mesage printr-un mesaj sugestiv.

De asemenea, nu uitati sa definiti service-ul in manifest:

<service
    android:name=".CustomFirebaseMessagingService"
    android:exported="false"
    android:directBootAware="true">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

Pentru a testa trimiterea de notificari, vom folosi Firebase Console si vom crea o campanie de notificari:

Alegeti un titlu si un continut pentru notificare.

Selectati User segment si selectati aplicatia creata de voi in sectiunea App. Continuati si programati trimiterea notificarii Now. Lansati campania si asteptati primirea notificarii.

5. In acest exercitiu veti lucra cu notiunea de 'topic' de mesaje. Incepeti prin a crea interfata necesara folosind un layout si activity-ul creat anterior. Mai jos, aveti o referinta pentru interfata:

  • la click pe butonul SUBSCRIBE, va fi apelata o metoda prin care veti face subscribe la topicul cu numele introdus in EditText
  • la click pe butonul UNSUBSCRIBE, va fi apelata o metoda prin care veti face unsubscribe la topicul cu numele introdus in EditText

Pentru a testa notificarile trimise pe topice, veti face subscribe la un topic si veti crea o campanie de notificari, dar spre deosebire de exemplul anterior, veti seta ca target Topic si veti selecta topicul dorit.

Testati trimiterea de notificari si dupa unsubscribe.