我有一个Android应用程序,正在尝试使用Firebase功能中的Firebase Messaging API向安装了该应用程序的特定设备发送通知。但通知从未出现。但是,从Firebase控制台手动发送确实会在同一设备上成功显示通知。以下是相关的Firebase功能代码:
var message = {
notification: {
title: notifTitle,
body: notifBody,
sound: 'default',
android_channel_id: 'update_channel',
channel_id: 'update_channel'
// tag:
}
};
var options = {}
console.log(message);
console.log('registrationToken: ' + registrationToken);
// Send a message to the device corresponding to the provided
// registration token.
admin.messaging().sendToDevice([registrationToken], message, options)
.then((response) => {
console.log(response);
...
调用时记录以下内容,似乎已成功发送通知:
{ results: [ { messageId: '0:1544572985549904%5be491645be49164' } ],
canonicalRegistrationTokenCount: 0,
failureCount: 0,
successCount: 1,
multicastId: 5825519571250606000 }
在我的Android应用程序中,我在主活动的onCreate((中创建了update_channel(因为,从我收集的信息来看,Android Oreo API 26+需要一个特定的频道…(:
private void createNotificationChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String id = getString(R.string.update_notification_channel);
CharSequence name = getString(R.string.app_name);
String description = getString(R.string.app_name);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(id, name, importance);
channel.setImportance(NotificationManager.IMPORTANCE_HIGH);
//channel.setDescription(description);
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
并将其设置为Manifest:中的默认通道
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="update_notification_channel"/>
我不知道问题是否与渠道有关,或者我是否在某个地方错过了一步,或者是什么。
要想在应用程序处于前台或后台时发出通知,您必须在Android应用程序中实现并注册FirebaseMessagingService,才能在onMessageReceived((上接收调用,然后在收到通知消息时手动使用其中的NotificationManager创建通知。
来自文件:
Firebase通知的行为因接收应用程序的前台/后台状态而异。如果你想让前台应用程序接收通知消息或数据消息,你需要编写代码来处理onMessageReceived回调。