Да, это возможно:
Обновите файл AndroidManifest.xml
, включив в него следующее:
<receiver android:name="io.invertase.firebase.notifications.RNFirebaseBackgroundNotificationActionReceiver" android:exported="true">
<intent-filter>
<action android:name="io.invertase.firebase.notifications.BackgroundAction"/>
</intent-filter>
</receiver>
<service android:name="io.invertase.firebase.notifications.RNFirebaseBackgroundNotificationActionsService"/>
Добавить a.JS-файл (например, backgroundMessaging.js
), содержащий следующее:
import firebase from 'react-native-firebase'
export const backgroundMessageListener = async (message) => {
const notification = new firebase.notifications.Notification()
// TODO: Configure your notification here...
// https://rnfirebase.io/docs/v4.3.x/notifications/reference/AndroidAction
const action = new firebase.notifications.Android.Action('reply', 'ic_launcher', 'Reply')
action.setShowUserInterface(false)
// https://rnfirebase.io/docs/v4.0.x/notifications/reference/AndroidRemoteInput
const remoteInput = new firebase.notifications.Android.RemoteInput("input")
remoteInput.setLabel('Reply')
action.addRemoteInput(remoteInput)
notification.android.addAction(action)
firebase.notifications().displayNotification(notification)
return Promise.resolve()
}
export const backgroundActionHandler = async (notificationOpen) => {
if (notificationOpen.action === 'reply') {
// TODO: Handle the input entered by the user here...
console.log(notificationOpen);
}
return Promise.resolve();
};
Обновление index.js
выглядит следующим образом:
import { backgroundMessageListener, backgroundActionHandler } from './backgroundMessaging'
AppRegistry.registerHeadlessTask('RNFirebaseBackgroundMessage', () => backgroundMessageListener)
AppRegistry.registerHeadlessTask('RNFirebaseBackgroundNotificationAction', () => backgroundActionHandler);
Примечания:
В этом примере предполагается, что вы уже настроили react-native-firebase
и следовали инструкции по установке здесь .Функция backgroundMessageListener
будет вызываться, когда ваше приложение не на переднем плане и получено уведомление «данные». Получение уведомлений содержит примеры того, как выполнить дополнительную настройку, такую как запрос разрешения на получение уведомлений.