当前位置: 首页 > 知识库问答 >
问题:

使用Firebase的聊天应用:收到新消息时获得通知-Android

左丘善
2023-03-14

下面是我的实现方式:

chatMsgsRef.orderByChild(FirebaseDBKeys.LOCATION_LAST_UPDATED).addChildEventListener(new ChildEventListener() {

            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                ChatMessage message = dataSnapshot.getValue(ChatMessage.class);

                if (!message.getSenderId().equals(currentUserId)) {

                    mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

                    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(NotificationsService.this)
                            .setSmallIcon(R.drawable.message)
                            .setContentTitle("New Message from " + message.getReceipientName())
                            .setContentText(message.getMessage())
                            .setOnlyAlertOnce(true)
                            .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
                    mBuilder.setAutoCancel(true);
                    mBuilder.setLocalOnly(false);


                    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

                }
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

我如何以它在其他聊天应用程序(如whatsapp等)中的工作方式实现通知??

共有1个答案

宋宏儒
2023-03-14

正确的方法是,当有一个新的聊天发送给客户端时,将一个推送数据消息与聊天一起发送给客户端。

这篇博文解释了如何实现这一点。基本上,您需要设置一个服务器来监听chat firebase ref并在更新时发送推送通知。这样,你的客户就可以在应用程序中或在应用程序外,仍然得到推动。

如果您使用某个服务,则会出现许多潜在的问题。

 类似资料:
  • 我正在开发一个使用firebase实时数据库的聊天应用程序。我能够交换消息,但我希望有一个消息警报通知新消息。发送通知使用firebase控制台是工作的,但现在我想自动化它没有firebase控制台。 安卓客户端之间的推送通知需要创建自己的app服务器吗?或者有没有另外一种方法来实现这一点,而不是创建一个服务器? 谢谢

  • 我正在使用FCM进行通知。FCM在从Firebase数据库创建数据时被触发。我收到了第一条信息。在此之后,不会接收到其他连续的消息。我在本地环境下运行这个。问题是由于以下消息“未配置计费帐户。外部网络无法访问,配额受到严重限制。配置计费帐户以消除这些限制”或任何其他问题造成的。我是否需要进入接收消息的计费计划。在测试环境中工作,这是不转移到计费计划的原因。如果问题与计费计划无关,可以有人指出代码的

  • 我正在接收令牌,但当我从Firebase控制台发送通知时,我的设备上不会发生任何事情,无论应用是否处于后地。与此同时,我的Android应用程序收到通知。 我遵循了这个指南: https://firebase.google.com/docs/cloud-messaging/ios/client 为了确保这一点,我还在 https://github.com/firebase/quickstart-i

  • null 我遵循Xamarin的文档实现了这个功能。 然后一步一步地执行,直到下面的部分: 后台通知 我点击了Log Token按钮并收到了令牌。 null Firebase控制台显示消息为“完成”。 我错过了什么来解决这个问题?

  • 我在项目中使用Firebase身份验证。今天我决定将FCM集成到我的项目中。但是我无法从我的Firebase控制台收到任何通知。我还尝试重新下载. json文件,但没有成功。你们知道我的问题吗? Android清单.xml FirebaseMessageService.java FirebaseIDService.java 我认为这个问题不是由我的MainActiviy.java决定的,但以防万一

  • 我对FireBase云消息有一个问题,我从设备中获取令牌,并通过Google FireBase通知控制台发送通知测试。但是,通知从来没有被记录,也没有被推送到android虚拟设备。FCM的文档几乎与下面的代码完全相同,其他代码很少,您还需要做什么来获得使用FireBase的推送通知。我已经完成了所有的设置信息(build.gradle添加、安装google play服务等)如文档中所指定的,但仍