Skip to content

Notification is not triggering inside the setBackgroundMessageHandler and not onBackground event is triggering. #1131

@Awais7899

Description

@Awais7899

index .js

/**

import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';
import messaging from '@react-native-firebase/messaging';
import notifee, {AndroidImportance, AuthorizationStatus} from '@notifee/react-native';

/**

  • Check and request notification permission (for Android 13+)
    */
    async function checkNotificationPermission() {
    try {
    const settings = await notifee.getNotificationSettings();
    console.log('Notification Settings:', settings);
    console.log(AuthorizationStatus.DENIED)

    if (settings.authorizationStatus === AuthorizationStatus.DENIED) {
    console.log('Requesting permission for notifications...');
    const newSettings = await notifee.requestPermission();
    console.log('New Notification Settings:', newSettings);
    }
    } catch (error) {
    console.log('Error checking/requesting notification permissions:', error);
    }
    }

/**

  • Foreground Service Registration
    */
    notifee.registerForegroundService(notification => {
    return new Promise(() => {
    // Do nothing for now
    });
    });

/**

  • Background Event Handling for Notifee
    */
    notifee.onBackgroundEvent(async ({type, detail}) => {
    console.log('Background event received:', type, detail);

if (type === notifee.EventType.DISMISSED || type === notifee.EventType.PRESS) {
// Handle event, e.g., dismiss call or navigate
console.log('Notification event handled:', type);
}
});

let notificationId; // Variable to hold the notification ID

/**

  • Firebase Background Message Handler
    */
    messaging().setBackgroundMessageHandler(async remoteMessage => {
    try {
    console.log('Remote message received in background:', remoteMessage);

    // Parse the message data to extract the caller details
    const user = JSON.parse(remoteMessage?.data?.user);
    const callerName = ${user?.firstName} ${user?.lastName};

    // Create a notification channel for video calls
    const channelId = await notifee.createChannel({
    id: 'video_call',
    name: 'Video Call',
    importance: AndroidImportance.HIGH,
    });
    console.log('Channel created with ID:', channelId);

    // Display the incoming call notification
    notificationId = await notifee.displayNotification({
    title: 'Incoming call',
    body: Call is coming from ${callerName},
    android: {
    channelId,
    sound: 'default',
    importance: AndroidImportance.HIGH,
    visibility: AndroidVisibility.PUBLIC,
    importance: AndroidImportance.HIGH,
    category: AndroidCategory.MESSAGE,
    pressAction: {id: 'default'}, // Set an action for pressing the notification
    },
    });
    console.log('Notification displayed with ID:', notificationId);
    } catch (error) {
    console.error('Error displaying notification:', error);
    }
    });

/**

  • Register the app component
    */
    AppRegistry.registerComponent(appName, () => App);

/**

  • Initialize notification permission check on app start
    */
    checkNotificationPermission();

    "react-native": "0.75.4",
    "@notifee/react-native": "^9.1.2",

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions