React-Native-FCM未针对封闭应用推动通知



我的应用仅在打开应用程序和后台时才获得通知。但是我需要通知即使是关闭的应用程序也应该到达。我该如何使用反应fCM在反应中进行此操作?

我的代码在下面,请参考

FCM.getInitialNotification().then(notif=>console.log(notif));
            FCM.requestPermissions(); // for iOS
            FCM.getFCMToken().then(token => {
                console.log(token)
                // store fcm token in your server
            });
            this.notificationListener = FCM.on(FCMEvent.Notification, async (notif) => {
                // there are two parts of notif. notif.notification contains the notification payload, notif.data contains data payload
                if(notif.local_notification){
                  //this is a local notification
                  return;
                }
                if(notif.opened_from_tray){
                  //app is open/resumed because user clicked banner
                  console.log('clicked');
                  return;
                }
                this.showLocalNotification(notif);
            });
            this.refreshTokenListener = FCM.on(FCMEvent.RefreshToken, (token) => {
                console.log(token)
                // fcm token may not be available on first load, catch it here
            });
      showLocalNotification(notif) {
          FCM.presentLocalNotification({
            title: notif.title,
            body: notif.body,
            priority: "high",
            click_action: notif.click_action,
            show_in_foreground: true,
            local: true
          });
      }

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="22" />
    <application
      android:name=".MainApplication"
      android:allowBackup="true"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:theme="@style/AppTheme">
      <receiver android:name="com.evollu.react.fcm.FIRLocalMessagingPublisher"/>
      <receiver android:enabled="true" android:exported="true"  android:name="com.evollu.react.fcm.FIRSystemBootEventReceiver">
        <intent-filter>
          <action android:name="android.intent.action.BOOT_COMPLETED"/>
          <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
          <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
          <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
      </receiver>
      <service android:name="com.evollu.react.fcm.MessagingService" android:enabled="true" android:exported="true">
        <intent-filter>
          <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
      </service>
      <service android:name="com.evollu.react.fcm.InstanceIdService" android:exported="false">
        <intent-filter>
          <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
      </service>
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        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>
        <intent-filter>
          <action android:name="fcm.ACTION.HELLO" />
          <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
      </activity>
      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
      <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="XXXXXX"/>
    </application>

您的问题是您如何推动通知。FCM将识别并仅弹出通知,其中包含属性"通知"。

如果您需要命令

this.showlocalnotification(notif);

要显示您的通知,这意味着您正在本地管理通知,因此,您的封闭应用不会管理它。

结果,请检查您如何将通知发送到云,并确保仅在没有"通知"属性时触发事件" fcmevent.notification"。

ex:

noteA = {notification: {title: "Notification Title", body:"Notification body"}, data: {optional: "content"}};
noteB = {title: "Notification Title", body:"Notification body"}, data: {optional: "content"}};

结果:

notea:如果不触发fcmevent.notification

,应弹出通知

noteb:应触发fcmevent.notification。

相关内容

  • 没有找到相关文章

最新更新