使用 RealmDB (MongoDB) 和 react-native-push-notification 推送通知

Push Notifications with RealmDB (MongoDB) and react-native-push-notification

我正在将 Realm 用于一个已经相当复杂的应用程序,我想通过添加推送通知来完成它。我已经安装了 react-native-push-notification 并使其与 FCM (Firebase Cloud Messaging) 一起使用。

在客户端,我确实收到了来自 Firebase 的测试通知。

然后我通过添加发件人 ID 和 API 密钥在 Realm 控制台中配置推送通知。

问题是,当我从 Realm 发送通知时,它以“已发送”结束,但绝对没有任何反应,Realm 控制台中没有日志,Firebase 端没有任何内容,客户端也没有任何内容。

关于 Realm 推送通知的文档非常有限,我不太清楚该怎么做。该文档主要针对 IOS 和 Android.

这是我在 index.js 中的代码:

import PushNotificationIOS from '@react-native-community/push-notification-ios';
import PushNotification from 'react-native-push-notification';

PushNotification.configure({
  onRegister: function (token) {
    console.log('TOKEN:', token);
  },
  onNotification: function (notification) {
    console.log('NOTIFICATION:', notification);
    notification.finish(PushNotificationIOS.FetchResult.NoData);
  },

  onAction: function (notification) {
    console.log('ACTION:', notification.action);
    console.log('NOTIFICATION:', notification);
  },

  onRegistrationError: function (err) {
    console.error(err.message, err);
  },
  permissions: {
    alert: true,
    badge: true,
    sound: true,
  },
  popInitialNotification: true,
  requestPermissions: true,
});

PushNotification.createChannel(
  {
    channelId: 'fcm_fallback_notification_channel',
    channelName: 'FCM CHANNEL',
    channelDescription: 'Description test',
  },
  created => console.log(`CreateChannel returned '${created}'`),
);

PushNotification.localNotification({
  channelId: 'fcm_fallback_notification_channel',
  vibrate: true,
  vibration: 300,
  playSound: true,
  soundName: 'default',
});

有谁知道教程或可以给我一些额外信息的东西吗?

因此,要使其正常工作,您必须在 index.js 中添加以下行:

PushNotification.subscribeToTopic('topic-id-in-realm-console');

并在 Realm 控制台中使用相同的主题 ID:

结果是这样的 (index.js):

import PushNotificationIOS from '@react-native-community/push-notification-ios';
import PushNotification from 'react-native-push-notification';

PushNotification.configure({
  onRegister: function (token) {
    console.log('TOKEN:', token);
  },

  onNotification: function (notification) {
    console.log('NOTIFICATION:', notification);
    notification.finish(PushNotificationIOS.FetchResult.NoData);
  },

  onAction: function (notification) {
    console.log('ACTION:', notification.action);
    console.log('NOTIFICATION:', notification);
  },

  onRegistrationError: function (err) {
    console.error(err.message, err);
  },

  permissions: {
    alert: true,
    badge: true,
    sound: true,
  },
  popInitialNotification: true,
  requestPermissions: true,
});

PushNotification.subscribeToTopic('topic-id-in-realm-console');// <== HERE

在客户端: