не может обнаружить уведомление, когда приложение закрыто - PullRequest
0 голосов
/ 17 сентября 2018

, поэтому я пытался сделать это приложение, но по какой-то причине, после того, как я не могу обнаружить уведомление от консоли Firebase, когда приложение закрыто (не в фоновом режиме или на переднем плане, они работают нормально).

Вот некоторые из соответствующих файлов.

componentDidMount() {
            this.notificationDisplayedListener = firebase.notifications().onNotificationDisplayed((notification: Notification) => {
                    // Process your notification as required
                    // ANDROID: Remote notifications do not contain the channel ID. You will have to specify this manually if you'd like to re-display the notification.
            });
            this.notificationListener = firebase.notifications().onNotification((notification: Notification) => {
                    // Process your notification as required
                    notification.android.setChannelId('test-channel')
                    console.log("I'm called haha", notification);
                    firebase.notifications().displayNotification(notification)
            });
            this.messageListener = firebase.messaging().onMessage((message) => {
                    bgMessaging(message)
            })
    }

    componentWillUnmount() {
            this.notificationDisplayedListener();
            this.notificationListener();
    }

android manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="com.mobalib">
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <uses-permission android:name="android.permission.VIBRATE" />
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

<application
        android:name=".MainApplication"
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher"
        android:allowBackup="false"
        android:theme="@style/AppTheme">

      <service android:name="io.invertase.firebase.messaging.RNFirebaseMessagingService">
        <intent-filter>
              <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
        <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>
      <service
              android:name="io.invertase.firebase.messaging.RNFirebaseInstanceIdService"
              android:enabled="true"
              android:exported="true">
        <intent-filter>
              <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
      </service>
      <activity
              android:launchMode="singleTop"
              android:name=".MainActivity"
              android:label="@string/app_name"
              android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
              android:windowSoftInputMode="adjustResize">
        <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
  </application>
</manifest>

index.js:

AppRegistry.registerHeadlessTask('RNFirebaseBackgroundMessage', () => bgMessaging);

и наконец bgMesseging.js:

xport default (message: RemoteMessage) => {
    // handle your message
    const title = message.get
    const notification = new firebase.notifications.Notification()
              .setNotificationId('notificationId')
              .setTitle('My notification title')
              .setBody('My notification body')
              .setData({
                      key1: 'value1',
                      key2: 'value2',
              });
    notification
            .android.setChannelId('test-channel')
    firebase.notifications().displayNotification(notification)
    console.log(message);
    return Promise.resolve();

}

1 Ответ

0 голосов
/ 23 ноября 2018

TL / dr заключается в том, что в зависимости от марки вашего телефона уведомление может быть обнаружено только.

, поэтому Android не так уж хорош, когда дело доходит до этой части уведомления, но его можно настраивать с другой стороны.что мне нравится

...