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
RunoptiuneaMessaging - Selectati optiunea de proiect de
Android

- Completati datele pentru proiectul vostru
Note:
Android package nametrebuie sa fie cel pe care l-ati setat la crearea proiectului in Android Studio. Optional, puteti alege si un nume. Nu este nevoie sa completatiDebug signing certificate SHA-1.

- Inregistrati aplicatia si continuati la seciunea
Download and add config file. Descarcati fisierulgoogle-services.jsonsi adaugati-l in proiect in directorul indicat

- Continuati la sectiunea
Add Firebase SDKsi 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 fisierulbuild.gradle.kts(Module :app), in sectiunea dependencies:implementation(libs.firebase.common.ktx)siimplementation(libs.firebase.messaging.ktx)- pentru Kotlin sauimplementation(libs.firebase.common)siimplementation(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 facesubscribela topicul cu numele introdus in EditText - la click pe butonul
UNSUBSCRIBE, va fi apelata o metoda prin care veti faceunsubscribela 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.