Node.js 如何在Fatter android应用程序中发送推送通知?

Node.js 如何在Fatter android应用程序中发送推送通知?,node.js,mongodb,flutter,push-notification,Node.js,Mongodb,Flutter,Push Notification,我开发了一款颤振android应用程序。我的数据库是MongoDB。我使用Node.jsapi将我的颤振应用程序与MongoDB连接起来。我希望在新数据记录到达MongoDB时发送推送通知。我如何才能做到这一点?最简单的方法是使用Firebase云消息传递。特别是因为谷歌不赞成以前用于Android的GCM。此外,Firebase云消息是免费的,可用于iOS和Android。不过,苹果的APN服务也需要安装和付费开发者帐户 如果尚未创建Firebase项目,请创建并启用云消息传递 设置Node.

我开发了一款颤振android应用程序。我的数据库是MongoDB。我使用Node.jsapi将我的颤振应用程序与MongoDB连接起来。我希望在新数据记录到达MongoDB时发送推送通知。我如何才能做到这一点?

最简单的方法是使用Firebase云消息传递。特别是因为谷歌不赞成以前用于Android的GCM。此外,Firebase云消息是免费的,可用于iOS和Android。不过,苹果的APN服务也需要安装和付费开发者帐户

  • 如果尚未创建Firebase项目,请创建并启用云消息传递

  • 设置Node.js服务器,以便它可以向android和IOS设备发送推送通知。单击项目概述、设置和服务帐户,按照说明为项目生成私钥,并按照说明进行设置。另外,npm安装“firebase管理员”

  • 完成firebase设置后,请参阅这些文档了解如何发送消息

  • 有几种发送消息的方法。您可以直接发送消息

    使用此代码

    // This registration token comes from the client FCM SDKs.
    var registrationToken = 'YOUR_REGISTRATION_TOKEN';
    
    var message = {
      data: {
        score: '850',
        time: '2:45'
      },
      token: registrationToken
    };
    
    // Send a message to the device corresponding to the provided
    // registration token.
    admin.messaging().send(message)
      .then((response) => {
        // Response is a message ID string.
        console.log('Successfully sent message:', response);
      })
      .catch((error) => {
        console.log('Error sending message:', error);
      });
    
    如果要发送大量通知,还可以为设备创建要订阅的主题。更多的例子再次出现在文档中。现在,如果您想知道令牌是什么,那么下一步就是

  • 令牌来自连接到平台的唯一设备。您可以通过从安装Firebase Messaging sdk并按照说明将必要的依赖项添加到pubsec.yaml并正确配置Android清单和iOS文件以进行更改来获取令牌
  • 此包将为您提供获取通信和接收从Node.JS服务器发送的通知的方法

    下面是一个在flifter中从前端设备抓取令牌的示例

    final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
      bool _initialized = false;
    
    
    
         Future<void> init() async {
            if (!_initialized) {
              // For iOS request permission first.
              _firebaseMessaging.requestNotificationPermissions();
              _firebaseMessaging.configure(onMessage: (Map<String, dynamic> `enter        code here`message) {
        print('onMessage: $message');
        Platform.isAndroid
            ? showNotification(message['notification'])
            : showNotification(message['aps']['alert']);
        return;
      }, onResume: (Map<String, dynamic> message) {
        print('onResume: $message');
        return;
      }, onLaunch: (Map<String, dynamic> message) {
        print('onLaunch: $message');
        return;
      });
    
          // For testing purposes print the Firebase Messaging token
          String token = await _firebaseMessaging.getToken();
          print("FirebaseMessaging token: $token");
    
          _initialized = true;
        }
      }
    
    final FirebaseMessaging\u FirebaseMessaging=FirebaseMessaging();
    bool _initialized=false;
    Future init()异步{
    如果(!\u已初始化){
    //对于iOS,请先请求权限。
    _firebaseMessaging.requestNotificationPermissions();
    _配置(onMessage:(映射`enter code here`消息){
    打印('onMessage:$message');
    平顶板蓝根
    ?showNotification(消息['notification'])
    :showNotification(消息['aps']['alert']);
    返回;
    },onResume:(映射消息){
    打印('onResume:$message');
    返回;
    },onLaunch:(映射消息){
    打印('onLaunch:$message');
    返回;
    });
    //出于测试目的,打印Firebase消息传递令牌
    String token=wait_firebaseMessaging.getToken();
    打印(“FirebaseMessaging令牌:$token”);
    _初始化=真;
    }
    }
    
    此时,您最有可能将令牌保存到MongoDB数据库中,并将令牌与您的用户和特定设备相关联。当然,您还必须安装firebase核心和颤振,并进行所有必要的配置


    您仍然可以维护您的NodeJS API和MongoDB数据库,并使用免费的云消息服务将您的服务器通知推送到您的设备。

    我们不能在没有自己的服务器或Firebase的情况下直接从Flatter发送通知吗。我的意思是,如果我们将令牌保存到数据库中,并使用php发送通知,或者使用flatter本身发送通知。我不想托管服务器或firebase自己的数据库。