Добавляйте ответы на уведомления Android при использовании response-native-firebase - PullRequest
0 голосов
/ 25 сентября 2018

Android 7.0 предоставил пользователям возможность вводить текст непосредственно в уведомление, чтобы ответить на него , не открывая приложение.Я использую проект response-native-firebase для получения push-уведомлений в моем приложении React Native.

Судя по документации, кажется, что эта функция поддерживается - в частности, AndroidNotification.addAction и AndroidAction.addRemoteInput может показывать, что это возможно.

Однако я не могу найти примеров того, как правильно реализовать эту функцию.Поддерживается ли эта функция в проекте React Native с использованием react-native-firebase?

1 Ответ

0 голосов
/ 25 сентября 2018

Да, это возможно:

  1. Обновите файл 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"/>
    
  2. Добавить 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();
    };
    
  3. Обновление index.js выглядит следующим образом:

    import { backgroundMessageListener, backgroundActionHandler } from './backgroundMessaging'
    
    AppRegistry.registerHeadlessTask('RNFirebaseBackgroundMessage', () => backgroundMessageListener)
    AppRegistry.registerHeadlessTask('RNFirebaseBackgroundNotificationAction', () => backgroundActionHandler);
    

Примечания:
В этом примере предполагается, что вы уже настроили react-native-firebase и следовали инструкции по установке здесь .Функция backgroundMessageListener будет вызываться, когда ваше приложение не на переднем плане и получено уведомление «данные». Получение уведомлений содержит примеры того, как выполнить дополнительную настройку, такую ​​как запрос разрешения на получение уведомлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...