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
optiuneaMessaging
- 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 completatiDebug signing certificate SHA-1
.
- Inregistrati aplicatia si continuati la seciunea
Download and add config file
. Descarcati fisierulgoogle-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 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 facesubscribe
la topicul cu numele introdus in EditText - la click pe butonul
UNSUBSCRIBE
, va fi apelata o metoda prin care veti faceunsubscribe
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
.