我有两个应用程序,一个客户预订应用程序和一个管理接收器应用程序。它们都连接到同一个Firebase数据库。当客户预订时,我可以在我的管理应用程序中查看。但是,我如何使它,以便我收到通知,在管理应用程序,一旦预订是在客户应用程序?
我已经找到了这段代码,但我如何实现它,使它显示的通知,即使管理应用程序没有打开?
Uri notificationSoundURI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mNotificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(subject)
.setContentText(object.getString("body"))
.setAutoCancel(true)
.setSound(notificationSoundURI)
.setContentIntent(resultIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, mNotificationBuilder.build());
ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, ToneGenerator.MAX_VOLUME);
toneG.startTone(ToneGenerator.TONE_CDMA_HIGH_L, 3000);
((Vibrator)getSystemService(VIBRATOR_SERVICE)).vibrate(2000);
我的Firebase树看起来像这样
{
"Bookings",
"UserID Appears here",
"User booking info appears here"}
}
bookings节点是一个常量,并且始终存在,一旦进行了预订,用户id就会出现。我可以有某种服务,即使在应用程序关闭时运行,监听“userid”节点更新?然后开火上面的通知方法?我从未使用过通知和服务。
这是云功能和Firebase云消息传递的典型用例。事实上,这种场景非常常见,以至于在Firebase文档中有一个示例,名为:当某些有趣的事情发生时通知用户:
云功能允许您通过在Google的服务器上运行(node.js)代码来响应Firebase项目中的事件。由于这段代码运行在谷歌的服务器上,所以即使在应用程序不活动的情况下,它也会是活动的。然后,这段代码可以使用Firebase Admin SDK来调用其他Firebase服务,比如这里的云消息传递。
Firebase Cloud Messaging允许您向安装在设备上的应用程序发送消息,即使该应用程序未被积极使用。您通常使用问题中的代码来响应接收到这样的消息,然后在该设备上显示本地通知。然后,当用户单击通知时,您打开应用程序,并使用实时数据库API从服务器读取(其余的)数据
有关此方面的更多信息,请参阅:
管理应用程序的代码
// Minimal Fcm Service
class FcmService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
remoteMessage.data.isNotEmpty().let {
// data message, handle it or start a service
Intent(this, ConnectionService::class.java).also { intent -> startService(intent) }
}
remoteMessage.notification?.let {
// notification message, you can define your custom notification here or just leave it that way
}
}
}
这就是你在舱单上注册的方式
<service
android:name="com.yourpackage.appname.FcmService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
编辑:
通知消息:
FCM代表客户端应用程序自动向最终用户设备显示消息。通知消息具有一组预定义的用户可见键和一个自定义键-值对的可选数据负载。
数据电文:
客户端app负责处理数据消息。数据消息只有自定义键值对。
编辑二:Java代码
public class FcmService extends FcmService {
@Override
public void onMessageReceived(@NotNull RemoteMessage remoteMessage) {
if (!remoteMessage.getData().isEmpty()){
// data message
// start a service or handle it the way you want
}
if (remoteMessage.getNotification() != null){
// notification message
}
}
}
连接到Java的Fcm官方服务
如果触发了多个通知,那么由于NOTIFICATION_ID是相同的,所以它不会更新。 有没有办法知道有多少通知被激发了?以便我可以相应地更新我的通知。 我不想单独发出通知。我想更新现有的通知。在这里,我只需要计算出在触发通知时已经触发的通知数。当用户点击它时,该号码应该重置。
我正在玩一个链接列表类项目的指针,我不知道如何创建到新节点的链接。我有一个类,它包含像这样的方法来操作数据结构。我希望这些节点是从csv文件中读取的出价。 当我从CSV加载所有数据时,我想 创建一个新的出价 将新的出价传递给函数 设置Bid对象的nextBid指针,并更新链接列表的尾部 我将不胜感激为每个出价对象创建新地址的任何指针,因为现在尾节点只'记得'第一个出价的地址。 我复制了下面的代码,
firebase中我的数据库截图 这里我有一个叫做产品的节点。在那里,我有许多子节点。所有这些节点都有一个共同的值叫做产品库存。我需要更新产品内部所有节点的产品库存值。我如何在android Studio(Java)中做到这一点,因为我正在开发一个购物应用程序?需要帮助。 流程是:用户将产品添加到购物车。在购物车里,我有ordernow按钮。因此,当用户现在单击order时,应该从products
我正在尝试按顺序逐个删除窗格中的所有节点,以便可以看到每一行被删除。为此,我创建了一个新线程,使用task类,并将方法delWalls()包装在一个平台中。runLater()。然后我用了线。睡眠会让循环变慢,这样当每一行被删除时,我就可以看到UI更新了,但是发生的是整个UI冻结,然后循环完成后,所有节点都消失了?有办法解决这个问题吗。。。谢谢 *所有节点都是线顺便说一句 //delWalls方法
SyntaxError:无效输入“h”:预期为“I/I”(第10行,第28列(偏移量:346))“merge(p:primaryconsumer),其中p.name=svc.name” 我100%确信这些名称是唯一的,并且将与现有节点集中的唯一使用者名称相匹配(有待观察)。 当唯一节点属性匹配时,如何将现有属性添加到新数据中?(我希望获得唯一的ID,但我必须能够在匹配上执行新数据的更新)
null 我遵循Xamarin的文档实现了这个功能。 然后一步一步地执行,直到下面的部分: 后台通知 我点击了Log Token按钮并收到了令牌。 null Firebase控制台显示消息为“完成”。 我错过了什么来解决这个问题?