What if your app could whisper important news to users exactly when they need it, without them opening it?
Why Push notifications with FCM in React Native? - Purpose & Use Cases
Imagine you want to send a message to your app users whenever there is a new update or offer. Without a system, you would have to ask users to open the app constantly to check for news.
This manual way is slow and annoying. Users might miss important info or get tired of checking. Also, sending messages one by one to each user is very hard and takes a lot of time.
Push notifications with FCM (Firebase Cloud Messaging) let your app receive messages instantly, even when it is closed. FCM handles sending messages to many users easily and reliably.
Check server for updates every minute; show alert if new update found
Use FCM to receive push notification instantly; show alert on message
With FCM push notifications, your app can talk to users anytime, keeping them informed and engaged without them lifting a finger.
A shopping app sends a push notification about a flash sale right when it starts, so users don't miss the deal.
Manual checking for updates is slow and unreliable.
FCM sends messages instantly to many users at once.
Push notifications keep users engaged and informed effortlessly.
Practice
Solution
Step 1: Understand FCM's role
FCM is a service designed to send push notifications to apps.Step 2: Compare options
Only To send push notifications to the app users describes sending push notifications, which is FCM's main purpose.Final Answer:
To send push notifications to the app users -> Option CQuick Check:
FCM = Push notifications [OK]
- Confusing FCM with local data storage
- Thinking FCM manages UI or navigation
- Assuming FCM is for database operations
Solution
Step 1: Identify token retrieval method
The method to get the device token is messaging().getToken().Step 2: Eliminate other options
requestPermission() asks user permission, sendMessage() sends messages, subscribeToTopic() subscribes to topics.Final Answer:
messaging().getToken() -> Option BQuick Check:
Get token = getToken() [OK]
- Using requestPermission() to get token
- Confusing sendMessage() with token retrieval
- Mixing subscribeToTopic() with token methods
import messaging from '@react-native-firebase/messaging';
async function getToken() {
const token = await messaging().getToken();
console.log(token);
}
getToken();Solution
Step 1: Analyze async function behavior
The function awaits messaging().getToken(), which returns the device token string.Step 2: Understand console.log output
It logs the token string, not undefined or error, assuming messaging is imported correctly.Final Answer:
Logs the device's FCM token string to the console -> Option AQuick Check:
getToken() returns token string [OK]
- Forgetting await causing Promise logged
- Assuming getToken() returns undefined
- Not importing messaging correctly
import messaging from '@react-native-firebase/messaging'; messaging().requestPermission();What is the likely problem?
Solution
Step 1: Check async method usage
requestPermission() returns a Promise and should be awaited to complete permission request.Step 2: Identify missing await effect
Without await, the permission request may not finish before next steps, causing unexpected behavior.Final Answer:
You forgot to await the requestPermission() call -> Option DQuick Check:
Await async calls like requestPermission() [OK]
- Not awaiting async permission calls
- Thinking requestPermission() is invalid
- Calling getToken() before permission
Solution
Step 1: Check permission before token
const authStatus = await messaging().requestPermission(); if (authStatus === messaging.AuthorizationStatus.AUTHORIZED) { const token = await messaging().getToken(); console.log(token); } requests permission and checks if authorized before getting token.Step 2: Verify async and order correctness
const authStatus = await messaging().requestPermission(); if (authStatus === messaging.AuthorizationStatus.AUTHORIZED) { const token = await messaging().getToken(); console.log(token); } awaits both calls and uses correct AuthorizationStatus check.Final Answer:
const authStatus = await messaging().requestPermission(); if (authStatus === messaging.AuthorizationStatus.AUTHORIZED) { const token = await messaging().getToken(); console.log(token); } -> Option AQuick Check:
Check permission first, then get token [OK]
- Getting token before permission
- Not awaiting async calls
- Ignoring authorization status check
Ready to prove it?
Pass the test and this pattern moves unknown
