diff --git a/functions/app/src/main/java/com/google/samples/quickstart/functions/java/FunctionsMessagingService.java b/functions/app/src/main/java/com/google/samples/quickstart/functions/java/FunctionsMessagingService.java index 1c861d243b..a3f7ac6d5f 100644 --- a/functions/app/src/main/java/com/google/samples/quickstart/functions/java/FunctionsMessagingService.java +++ b/functions/app/src/main/java/com/google/samples/quickstart/functions/java/FunctionsMessagingService.java @@ -1,11 +1,16 @@ package com.google.samples.quickstart.functions.java; +import android.Manifest; import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; +import android.content.pm.PackageManager; import android.os.Build; + import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; +import androidx.core.content.ContextCompat; + import android.util.Log; import com.google.firebase.messaging.FirebaseMessagingService; @@ -39,13 +44,17 @@ public void onMessageReceived(RemoteMessage remoteMessage) { // Check if message contains a data payload. if (remoteMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + remoteMessage.getData()); - NotificationManagerCompat manager = NotificationManagerCompat.from(this); - Notification notification = new NotificationCompat.Builder(this, "Messages") - .setContentText(remoteMessage.getData().get("text")) - .setContentTitle("New message") - .setSmallIcon(R.drawable.ic_stat_notification) - .build(); - manager.notify(0, notification); + // Check if permission to post notifications has been granted + if (ContextCompat.checkSelfPermission(this, + Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) { + NotificationManagerCompat manager = NotificationManagerCompat.from(this); + Notification notification = new NotificationCompat.Builder(this, "Messages") + .setContentText(remoteMessage.getData().get("text")) + .setContentTitle("New message") + .setSmallIcon(R.drawable.ic_stat_notification) + .build(); + manager.notify(0, notification); + } } } } diff --git a/functions/app/src/main/java/com/google/samples/quickstart/functions/kotlin/FunctionsMessagingService.kt b/functions/app/src/main/java/com/google/samples/quickstart/functions/kotlin/FunctionsMessagingService.kt index 5e9453d816..0ab8050b9b 100644 --- a/functions/app/src/main/java/com/google/samples/quickstart/functions/kotlin/FunctionsMessagingService.kt +++ b/functions/app/src/main/java/com/google/samples/quickstart/functions/kotlin/FunctionsMessagingService.kt @@ -1,11 +1,14 @@ package com.google.samples.quickstart.functions.kotlin +import android.Manifest import android.app.NotificationChannel import android.app.NotificationManager +import android.content.pm.PackageManager import android.os.Build import android.util.Log import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat +import androidx.core.content.ContextCompat import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage import com.google.samples.quickstart.functions.R @@ -32,13 +35,18 @@ class FunctionsMessagingService : FirebaseMessagingService() { // Check if message contains a data payload. if (remoteMessage.data.isNotEmpty()) { Log.d(TAG, "Message data payload: " + remoteMessage.data) - val manager = NotificationManagerCompat.from(this) - val notification = NotificationCompat.Builder(this, "Messages") - .setContentText(remoteMessage.data["text"]) - .setContentTitle("New message") - .setSmallIcon(R.drawable.ic_stat_notification) - .build() - manager.notify(0, notification) + // Check if permission to post notifications has been granted + if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == + PackageManager.PERMISSION_GRANTED + ) { + val manager = NotificationManagerCompat.from(this) + val notification = NotificationCompat.Builder(this, "Messages") + .setContentText(remoteMessage.data["text"]) + .setContentTitle("New message") + .setSmallIcon(R.drawable.ic_stat_notification) + .build() + manager.notify(0, notification) + } } }