Firebase Push Notification not working in android 13
Firebase Push Notification Integration Guide Step by Step:
To integrate FCM (Firebase Cloud Messaging) push notifications in an Android 13 project, you can follow these steps:
-
-
-
- Set up your Firebase project:
- Go to the Firebase console (https://console.firebase.google.com/) and create a new project or select an existing one.
- Enable Firebase Cloud Messaging for your project.
- Add the FCM dependencies:
- Open your project’s
build.gradle
file (the one in the project’s root directory). - Add the following dependencies in the
dependencies
block:dependencies { // Other dependencies... implementation 'com.google.firebase:firebase-messaging-ktx:23.1.0' }
- Open your project’s
- Update your AndroidManifest.xml:
- Add the following permissions inside the
manifest
tag:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
- Add the following permissions inside the
- Create a package with
notif
name - Add the following service and intent filters inside the
application
tag:<service android:name=".notif.MyFirebaseMessagingService" android:exported="true"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> </intent-filter> </service>
- Replace
.MyFirebaseMessagingService
with the name of your customFirebaseMessagingService
class.
- Set up your Firebase project:
- Create your custom FirebaseMessagingService:
- Create a new Java/Kotlin class in your project, extending
FirebaseMessagingService
. - Override the
onMessageReceived
method to handle incoming messages. You can display a notification or perform custom actions based on the received data.public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage remoteMessage) { // Handle the incoming message here } }
- Create a new Java/Kotlin class in your project, extending
- Initialise Firebase in MainActivity.kt class add below code in onCreate method
FirebaseApp.initializeApp(this)
- Add below code in MainActivity.kt class in onCreate method for permission dialogue in android 13
//Ask for Permission in android 13 if (Build.VERSION.SDK_INT > 32) { if (!shouldShowRequestPermissionRationale("112")){ getNotificationPermission(); } }
fun getNotificationPermission() { try { if (Build.VERSION.SDK_INT > 32) { ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), PERMISSION_REQUEST_CODE ) } } catch (e: Exception) { } }
override fun onRequestPermissionsResult( requestCode: Int, permissions: Array<String?>, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) when (requestCode) { PERMISSION_REQUEST_CODE -> { // If request is cancelled, the result arrays are empty. if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED ) { // allow Log.d("body", "granted") } else { //deny Log.d("permission","denied") } return } } }
-
-
- To get fcm token add below code to MyFirebaseMessagingService class
@Override public void onNewToken(String s) { super.onNewToken(s); Log.e("NEW_TOKEN",s); }
- When application is in foreground then notification call onMessageReceived method. Add onMessageReceived method in MyFirebaseMessagingService class
- When application is in background or terminated in this case when we tap on the notification then we notice that onMessageReceived method not called, to call onMessageReceived method add below code in MainActivity.kt
@Override public void handleIntent(Intent intent) { try { if (intent.getExtras() != null) { RemoteMessage.Builder builder = new RemoteMessage.Builder("MessagingService"); for (String key : intent.getExtras().keySet()) { builder.addData(key, intent.getExtras().get(key).toString()); } onMessageReceived(builder.build()); } else { super.handleIntent(intent); } } catch (Exception e) { super.handleIntent(intent); } }
- Add below code in build.gradle(project level)
buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { // Add the dependency for the Google services Gradle plugin classpath 'com.google.gms:google-services:4.3.15' } }
- Add
com.google.gms.google-services
plugin in build.gradle(app)plugins { id 'com.google.gms.google-services' }
- Test the integration:
- Build and run your Android app on an emulator or a physical device.
- Send a test notification using the Firebase console or by using the FCM API.That’s it! Your Android 13 project should now be integrated with FCM for push notifications. When a notification is received, it will be handled by your custom
FirebaseMessagingService
class, where you can define the desired behaviour.
@Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.d("complete paylod",remoteMessage.toString()); Log.d("payload",remoteMessage.getData().toString()); Log.d("what you get",remoteMessage.getData().get("your_key_name")); Log.d("title",remoteMessage.getNotification().getTitle()); Log.d("body",remoteMessage.getNotification().getBody()); }
MyFirebaseMessagingService.java class code 👇
package com.google.firebase.quickstart.firebasepushnotification.notif; import android.content.Intent; import android.util.Log; import com.google.firebase.messaging.FirebaseMessagingService; import com.google.firebase.messaging.RemoteMessage; public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void onNewToken(String s) { super.onNewToken(s); Log.e("NEW_TOKEN",s); } @Override public void onMessageReceived(RemoteMessage remoteMessage) { // Handle the incoming message here Log.d("complete payload",remoteMessage.toString()); Log.d("payload",remoteMessage.getData().toString()); Log.d("username",remoteMessage.getData().get("username")); Log.d("title",remoteMessage.getNotification().getTitle()); Log.d("body",remoteMessage.getNotification().getBody()); } @Override public void handleIntent(Intent intent) { try { if (intent.getExtras() != null) { RemoteMessage.Builder builder = new RemoteMessage.Builder("MessagingService"); for (String key : intent.getExtras().keySet()) { builder.addData(key, intent.getExtras().get(key).toString()); } onMessageReceived(builder.build()); } else { super.handleIntent(intent); } } catch (Exception e) { super.handleIntent(intent); } } }
MainActivity.kt Class Code👇
package com.google.firebase.quickstart.firebasepushnotification import android.Manifest import android.content.pm.PackageManager import android.os.Build import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.core.app.ActivityCompat import com.google.android.gms.tasks.OnCompleteListener import com.google.firebase.FirebaseApp import com.google.firebase.messaging.FirebaseMessaging import com.google.firebase.quickstart.firebasepushnotification.ui.theme.FirebasePushNotificationTheme class MainActivity : ComponentActivity() { private val PERMISSION_REQUEST_CODE = 112 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) FirebaseApp.initializeApp(this) //Ask for Permission in android 13 if (Build.VERSION.SDK_INT > 32) { if (!shouldShowRequestPermissionRationale("112")){ getNotificationPermission(); } } // get fcm token from firebase FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { return@OnCompleteListener } // Get new Instance ID token val token = task.result Log.e("NEW_TOKEN", token) }) setContent { FirebasePushNotificationTheme { // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { Greeting("Android") } } } } fun getNotificationPermission() { try { if (Build.VERSION.SDK_INT > 32) { ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), PERMISSION_REQUEST_CODE ) } } catch (e: Exception) { } } override fun onRequestPermissionsResult( requestCode: Int, permissions: Array<String?>, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) when (requestCode) { PERMISSION_REQUEST_CODE -> { // If request is cancelled, the result arrays are empty. if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED ) { // allow Log.d("body", "granted") } else { //deny Log.d("permission","denied") } return } } } } @Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Text( text = "Hello $name!", modifier = modifier ) } @Preview(showBackground = true) @Composable fun GreetingPreview() { FirebasePushNotificationTheme { Greeting("Android") } }
Build.gradle project file 👇
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { // Add the dependency for the Google services Gradle plugin classpath 'com.google.gms:google-services:4.3.15' } } plugins { id 'com.android.application' version '8.0.1' apply false id 'com.android.library' version '8.0.1' apply false id 'org.jetbrains.kotlin.android' version '1.7.20' apply false }
Build.gradle app file 👇
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'com.google.gms.google-services' } android { namespace 'com.google.firebase.quickstart.firebasepushnotification' compileSdk 33 defaultConfig { applicationId "com.google.firebase.quickstart.firebasepushnotification" minSdk 24 targetSdk 33 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary true } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion '1.3.2' } packagingOptions { resources { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } } dependencies { implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' implementation 'androidx.activity:activity-compose:1.5.1' implementation platform('androidx.compose:compose-bom:2022.10.00') implementation 'androidx.compose.ui:ui' implementation 'androidx.compose.ui:ui-graphics' implementation 'androidx.compose.ui:ui-tooling-preview' implementation 'androidx.compose.material3:material3' implementation 'com.google.firebase:firebase-messaging-ktx:23.1.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation platform('androidx.compose:compose-bom:2022.10.00') androidTestImplementation 'androidx.compose.ui:ui-test-junit4' debugImplementation 'androidx.compose.ui:ui-tooling' debugImplementation 'androidx.compose.ui:ui-test-manifest' implementation platform('com.google.firebase:firebase-bom:32.0.0') implementation 'com.google.firebase:firebase-messaging' }
Download Source Code 👇
25 Comments
Thanks for giving so much good Coding, Good Knowledge Even No Such Documentation is there in official web site of FireBase
Thanks @Naveen your comment motivate us. I faced the same issue. I found that firebase document not updated with latest SDK updates and handling of notification is not working properly in android 13, so I did lots of research with practical implementation and then created this step by step guide for all developers.
Helpful tutorial! Thanks Bro 👊
Thank you so much! You’ve saved me a tremendous amount of time and effort. Once again, I truly appreciate this fantastic document. 👍
This tutorial is real helpful Thanks Bro 😎
A standing ovation for this Firebase push notification masterpiece! The author’s expertise shines through, making complex topics digestible. The practical insights and clear instructions have saved me hours of trial and error. This guide is a must-read for anyone looking to enhance their app’s user engagement.
Highly impressed with the Firebase push notification article! It’s evident that the author has a deep understanding of the subject matter. The guide is not only informative but also serves as a quick reference for ongoing projects. Integrating Firebase has been a game-changer for our app’s communication strategy.
Kudos to the writer for this stellar guide on Firebase push notifications! The practical tips and real-world examples added immense value to my understanding. Following the steps outlined in the article was a breeze, and the results were instant. My app’s user engagement has never been more vibrant!
An absolute gem of an article! The Firebase push notification guide is a comprehensive and well-organized resource. The author has a knack for simplifying complex concepts, making it accessible to developers at all levels. My sincere appreciation for such a well-crafted and informative piece.
Fantastic read on Firebase push notifications! The author’s attention to detail and clarity in explaining concepts make this guide a standout. The troubleshooting section is a lifesaver for developers encountering issues. My app’s responsiveness has improved, thanks to the valuable insights shared in this article.
I am beyond grateful for stumbling upon this Firebase push notification guide. It’s a comprehensive yet easy-to-follow resource that has transformed the way I approach notifications in my app. The inclusion of Firebase has taken my app’s user interaction to new heights. Major kudos to the author for sharing this knowledge!
This article deserves all the praise for its detailed coverage of Firebase push notifications. The author’s expertise shines through in every section. The troubleshooting tips and common pitfalls to avoid were particularly enlightening. If you’re serious about improving your app’s communication strategy, this article is a must-read.
Hats off to the author for demystifying Firebase push notifications! The article’s simplicity and effectiveness make it stand out. The step-by-step instructions, coupled with real-world examples, make this a go-to resource. My app’s user engagement has seen a noticeable boost since implementing these Firebase notifications. Thank you!
Bravo! This Firebase push notification guide exceeded my expectations. The author’s approach to explaining the intricacies of push notifications is commendable. The article is well-structured, making it easy for both beginners and experienced developers to follow. Integrating Firebase for push notifications has never been this smooth.
This article on Firebase push notifications is a game-changer! The author has provided a perfect blend of theory and practical implementation. The instructions are crystal clear, and the added tips and tricks showcase the author’s expertise. My app’s notification system has never been more efficient. Highly recommended read!
Five stars for this Firebase push notification guide! It’s comprehensive, user-friendly, and saved me a lot of time in figuring things out on my own. The troubleshooting tips were particularly helpful. A big thank you to the author for sharing such valuable insights!
As a developer, I found this Firebase push notification article to be a gem! The explanations were thorough, and the real-world examples clarified any doubts I had. The article covers everything from setup to best practices, making it an invaluable resource. Highly recommended for anyone looking to enhance their app with push notifications.
Excellent breakdown of Firebase push notifications! The article is well-written, easy to follow, and offers valuable insights. The integration process was a breeze, and the results were immediate. My app’s user engagement and retention have improved significantly. Kudos to the author for this fantastic resource!
I can’t thank the author enough for this insightful article on Firebase push notifications. It was a lifesaver for someone like me, who was struggling with incorporating this feature into my app. The explanations were detailed, and the screenshots provided a visual guide that was immensely beneficial. Truly a must-read for anyone working with Firebase!
Amazing article on Firebase push notifications! The information provided was clear, concise, and incredibly helpful. The step-by-step guide made implementation a breeze. My app’s user engagement has skyrocketed since integrating Firebase push notifications. Highly recommend this article!
https://clck.ru/36Ew6A
Time is a finite resource, yet mastering its management is vital for individual and professional success. Efficient time management enables individuals to optimize their productivity and attain their goals.
In this write-up, we investigate the fundamental principles of successful time management. From fixing priorities to eradicating time-wasting activities, we plunge into strategies that support individuals handle their time effectively.
Effective time management starts off with concise goal setting and ordering. We examine techniques for discovering and concentrating on high-priority tasks, guaranteeing that time is allocated to activities that fit with long-term objectives.
Moreover, we talk about the importance of time awareness and self discipline in efficient time management. By tracking how time is spent and implementing strategies for evading procrastination and distractions, individuals can maximize their productivity and accomplish more in less time.
Additionally, we investigate the benefits of grouping tasks and time blocking for amplifying efficiency and mitigating context switching. By organizing their time effectively and constructing dedicated blocks for specific tasks, individuals can preserve focus and make steady progress.
In conclusion, learning efficient time management is vital for reaching individual and professional success. By applying methods for objective setting, prioritization, and self discipline, individuals can take control of their time and attain more with less effort.
[url=https://www.southwestteepeerental.com/copy-of-mood-boards-3]Exclusive event rentals available in the Scottsdale area and surrounding areas[/url]
Effective leadership is vital in driving teams and organizations towards achievement. Effective leaders possess a distinctive blend of competencies and qualities that inspire and impact others to accomplish common goals.
In this piece, we explore the attributes and approaches that characterize effective leadership. From communication skills to emotional intelligence, we delve into the central aspects that differentiate strong leaders from extraordinary ones.
Efficient leadership requires not only setting a explicit vision but also inspiring and fostering team members to attain that vision. We look into the value of delegation and developing a environment of belief and collaboration.
Moreover, we discuss the function of adjustability and resilience in efficient leadership. In today’s dynamic business landscape, leaders must continue to be open to changes and able to handle uncertainty and uncertainty effectively.
Additionally, we investigate the value of compassion and genuineness in establishing strong relationships with team members and cultivating a upbeat organizational climate.
In conclusion, effective leadership is critical for attaining organizational success. By nurturing powerful clear communication skills, emotional intelligence, and a atmosphere of trust and collaboration, leaders can motivate and empower their teams to reach great results. [url=https://www.southwestteepeerental.com/contact]Diverse selection of table rentals for events in Phoenix[/url]
Safe shopping isn’t just about picking any box with a lock; it’s about committing in the top protection for your belongings. In today’s society, where security threats are persistent, having a reliable safe is crucial. Whether you’re safeguarding cash, important documents, or sentimental items, the right safe can provide peace of mind like no other.
One of the most critical aspects of a safe is its construction. Top-notch safes are manufactured from sturdy materials such as steel or titanium, ensuring resistance against tampering. Additionally, advanced locking mechanisms, such as biometric scanners or digital keypads, add an extra layer of protection to discourage unauthorized access.
Another vital feature to consider is fire resistance. Premium safes are crafted to withstand high temperatures and safeguard your valuables in the event of a fire. Committing in a fireproof safe guarantees that even in the face of tragedy, your most valuable possessions remain intact.
Beyond safety, think about the capacity and location of your safe. Selecting a dimension that holds your assets without being too conspicuous is vital. Additionally, carefully placing your safe in a protected yet accessible location provides convenience without compromising security.
In conclusion, putting resources in a top-notch safe is vital for securing your valuable possessions. By focusing on characteristics such as build, heat resistance, and capacity, you can guarantee maximum security for peace of mind in any situation.
[url=Safe financing Scottsdale]https://mercurylock.com/services[/url]
Exploring the Science of Communication Mastery
Effective communication is vital to success in each and every aspect of life. Whether it’s constructing connections with others, negotiating deals in business, or conveying ideas effectively, mastering the skill of communication can lead to remarkable outcomes.
In this piece, we look into the different facets of successful communication. From verbal communication to facial expressions cues, we plunge into the strategies that stimulate precise and meaningful interactions.
Successful communication includes not only communicating oneself clearly but also actively listening to others. We examine the value of attentive listening and how it improves reciprocal understanding and nurtures improved connections.
Moreover, we discuss the function of understanding and emotional intelligence in productive communication. Understanding the emotions of others and being empathetic can drive to greater ties and resolution of conflicts.
Additionally, we look into the consequence of technological innovations on communication in the digital age. While technological developments has made communication easier and more handy, we moreover address its potential limitations and the way to manage them.
In conclusion, mastering the skill of efficient communication is essential for success in diverse aspects of life. By comprehending its fundamentals and practicing enthusiastic listening, empathy, and modifying to digital advancements, individuals can establish stronger connections and reach their goals more productively. [url=https://www.southwestteepeerental.com/corporate-branded-structures-collec]Elite corporate tent leasing options offered in the Phoenix area[/url]