我对Firebase通知有问题,如果我在应用程序在屏幕上运行时发送通知,通知会正确显示如下:
如果我在后台运行应用程序时发送通知,则通知如下所示:
这是我的FirebaseMessagingService类
public class AppFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
sendNotification(remoteMessage);
}
private void sendNotification(RemoteMessage remoteMessage) {
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
int icon = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? R.drawable.ic_video_label_white_24dp: R.drawable.ic_launcher;
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setWhen(System.currentTimeMillis());
notificationBuilder.setColor(ContextCompat.getColor(this, R.color.colorPrimary));
notificationBuilder.setSmallIcon(icon);
notificationBuilder.setContentTitle(remoteMessage.getNotification().getTitle());
notificationBuilder.setContentText(remoteMessage.getNotification().getBody());
notificationBuilder.setAutoCancel(true);
notificationBuilder.setSound(defaultSoundUri);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
Intent resultIntent = new Intent(this, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.setContentIntent(pendingIntent);
notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
}
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
}
为什么会这样?
发生这种情况的原因是Firebase通知的工作方式,以及应用程序在前台和后台时的不同行为:
因此,我决定在我的应用程序中不使用它作为:1。我无法控制它2。是应用程序的默认图标(在我的例子中,它看起来也像你的-四舍五入3。我不能用它做其他事情(在我的例子中,我还显示了图像添加操作,并且有Firebase通知-当应用程序在后台时,我不能这样做)
这是Firebase中的错误,尚未解决。链接此处:https://stackoverflow.com/a/37332514/1507602
另一种选择是不使用Firebase控制台发送通知,而是使用POST API,这样您的通知将直接发送到onMessageReceived()
,您可以在那里创建自己的通知。
要发送数据有效负载消息,您必须发出curl请求:
https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{ "data": {
"score": "5x1",
"time": "15:10"
},
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}
您可以从Firebase控制台获取服务器密钥(AIzaSyZ-1u...0GBYzPu7Udno5aA):您的项目-
我今天的通知图标有一个奇怪的问题。 我做了什么坏事吗? 这是我的图标图片(刚从这里下载https://material.io/icons/#ic_photo) : http://image.noelshack.com/fichiers/2016/44/1478185219-icon-notification.png 我错过什么了吗? 作为记录,我使用的是SDK 24,目前只创建了hdpi资源文件夹
我正在使用Firebase通知作为我的应用程序的推送通知。一切正常,但应用程序未运行时通知图标会显示白色圆圈。我的目标是SDK版本23,我还使用Roman Nurik的通知图标生成器生成透明白色图标。 当应用程序处于前台并运行时,通知图标显示正确。img 但当应用程序处于后台或被删除时,图标会被替换为通用的白色圆圈。img公司 这是我的通知生成器方法:
我们使用的是Firebase云消息。有时,当Android或iOS应用程序处于睡眠模式时,手机会收到相同(重复)的通知信息。对于设备标识,使用FIRInstanceID令牌。node.js上的一个外部服务器用于向Firebase服务发送通知。我们的服务器日志文件中没有出现重复的内容。
我有一个web应用程序,它为每个用户保留一个用户ID和firebase通知令牌。用户和令牌在Android设备上创建并发送到服务器,因此服务器知道在哪里发送通知(因为令牌)。 这里的问题是,一个用户可以登录多个设备。如果用户在两台设备上,那么我应该向这两台设备发送通知。web应用程序知道一个用户ID有两个令牌。这没关系。 但是如果我在同一台设备上卸载并安装应用程序会怎么样呢。我为用户获得了一个新的
我正在使用以下脚本向特定用户发送通知: 脚本工作正常,但我如何向安装我的应用程序的所有用户发送通知。我在我的应用程序中创建了一个主题(警报),我可以通过Firebase控制台向所有用户发送通知。有人可以指导我更新上面的主题脚本吗?
如何通过firebase云消息将通知从一台android设备发送到另一台设备?我不想使用firebase的管理面板来发送通知,我只想从一个设备发送到另一个设备。