【发布时间】:2019-06-18 18:46:20
【问题描述】:
我已经在 NodeJS 中实现了 firebase 管理 SDK 并尝试从服务器发送推送通知。我的问题是我没有在通知中获取数据部分(帐户和余额)。它只显示通知部分(标题和正文)。
我已经实现了类似这样的服务器端代码:
const admin = require("firebase-admin");
const serviceAccount = require("./my_service_account.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<myapp name>.firebaseio.com"
});
var payload = {
notification: {
title: "Hello",
body: "How are you."
},
data: {
account: "Savings",
balance: "$3020.25"
}
};
admin.messaging().sendToDevice(registrationToken,payload)
.then((response) =>{
console.log("Response", response);
}).catch((error) => {
console.log("Error", error);
});
在客户端我这样做如下:
public class MessagingReceive extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if(remoteMessage.getData().size() > 0){
Map<String, String> data = remoteMessage.getData();
handleData(data);
}
}
private void handleData(Map<String,String> data){
String title = data.get("account");
String body = data.get("balance");
Intent intent = new Intent(MessagingReceive.this,MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setContentTitle(title);
notificationBuilder.setContentText(body);
notificationBuilder.setAutoCancel(true);
notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
notificationBuilder.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0,notificationBuilder.build());
}
}
有人告诉我如何在通知中获取数据部分。任何帮助将不胜感激。
谢谢
【问题讨论】:
-
remoteMessage.getData().size() > 0是true吗? -
我正在尝试使用 if(remoteMessage.getData().size() > 0){ Log.d("Data",remoteMessage.getNotification().getTitle()); }
-
但是日志中没有任何价值。
-
Log.d("Data",remoteMessage.getData());看到了什么? -
我在 MessagingReceive 活动中获取数据,但我的启动器活动是 MainActivity,所以我如何才能在日志中获取数据。
标签: android firebase firebase-cloud-messaging