我使用django api发送通知和发送的数据如下所示
fields = {
'registration_ids': registrationIds,
"notification" : {
"body" : desc,
"title" : name,
"icon" : "https://urbanmatter.com/chicago/wp-content/uploads/2015/04/Girls-Shopping.jpg"
},
"data" : {
"id" : "1",
"body" : desc,
"title" : name,
"image" : "https://urbanmatter.com/chicago/wp-content/uploads/2015/04/Girls-Shopping.jpg"
}
}
下面是我的onMessageReceed()方法
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData().get("id"));
id = String.valueOf(remoteMessage.getData().get("id"));
}
if (remoteMessage.getNotification() != null) {
String title = remoteMessage.getNotification().getTitle();
String message = remoteMessage.getNotification().getBody();
String icon = remoteMessage.getNotification().getIcon();
Intent intent = new Intent(this, AnotherActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("id",id);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
final NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setContentTitle(title);
notificationBuilder.setContentText( message);
notificationBuilder.setContentIntent(pendingIntent);
notificationBuilder.setSound(defaultSoundUri);
notificationBuilder.setSmallIcon(R.drawable.jv);
notificationBuilder.setAutoCancel(true);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
ImageRequest imageRequest = new ImageRequest(icon, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
notificationBuilder.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(response));
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
}, 0, 0, null, Bitmap.Config.RGB_565,new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
}
});
MySingleton.getmInstance(this).addToRequestQue(imageRequest);
}
}
在FCM消息中添加这些行
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_face)
.setContentTitle("title")
.setContentText("message").setStyle(new NotificationCompat.BigPictureStyle().bigPicture(bitmap))
.setLargeIcon( getBitmapfromUrl(messageBody.getData().get("**YOUR_IMAGE_URL**")));
public Bitmap getBitmapfromUrl(String imageUrl) {
try {
URL url = new URL(imageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(input);
return bitmap;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
index.js中的代码 bgmessaging.js中的代码负责应用程序在后台时的推送 为了在应用程序处于前台时带来图像,我使用了下面的代码:-
我想为一个聊天应用程序实现FCM推送通知服务,我遵循Firebase文档中的步骤,当通知从Firebase控制台发送到我的设备时,我会得到通知。当我尝试使用http post to https://FCM.googleapis.com/FCM/send通过FCM将通知通过服务器端发送到设备时: 当应用程序处于活动状态并且我正在将此通知发送到我的设备时,Im在我的控制台日志中收到以下消息,所以我认为
null 而当app在后台时,系统托盘总是显示一个到达一个重复的通知(如收到通知a,系统托盘显示2个通知a)。 怎么解决这个问题? 编辑:添加的代码 我扩展了 类,并在 方法中包含该类 这是项目中我使用NotificationManager的唯一部分。 另外,我尝试在这个方法上添加一个日志。当应用程序处于前台时调用onMessageReceived。当应用程序在后台时,它不会被调用
我从控制台向我的应用程序发送消息,当它在后台时,我设法让应用程序做出我想要的反应。所以基本上SDK会显示一个通知,当用户点击它并启动应用程序时,我会使用一些自定义数据字段来构建对话框消息。
我在我的android应用程序中使用FCM来管理消息推送。当应用程序在前台并且应用程序图标也可见(正确)时,它完全正常工作。但是当应用程序在后台运行时,我没有正确收到通知。它显示白色方形图标作为通知图标,而不是透明图标。我知道,FCM会自动处理后台操作。但是我需要显示我的应用程序图标而不是那个白色图标。注意:我只使用透明图标。我还尝试了下面的编码 但是没有一个解决方案对我有效。有人能告诉我该怎么做
我正在从google firebase为我的android应用程序发送推送通知,目标是Android5.0: 我的推送通知代码是: 但为什么?这就像当应用程序在后台时,通知不使用活动代码中的设置,而只使用AndroidManifest中的某种“默认”设置。