gpt4 book ai didi

android - 为什么调用 Firebase admin.messaging.sendToDevice() 的 Firebase 函数无法在 Android 设备上创建通知

转载 作者:行者123 更新时间:2023-11-30 05:11:04 25 4
gpt4 key购买 nike

我有一个 Android 应用程序,我正在尝试使用来自 Firebase 函数的 Firebase 消息传递 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 应用程序中,我在主 Activity 的 onCreate() 中创建了 update_channel(因为据我所知,Android Oreo API 26+ 需要一个特定的 channel ...):

    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);
}
}

并将其设置为 list 中的默认 channel :

        <meta-data android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="update_notification_channel"/>

我不知道问题是否与 channel 有关,或者我是否遗漏了某个步骤,或者是什么原因。

最佳答案

要在应用程序处于前台或后台时通知工作,您必须在您的 Android 应用程序中实现并注册一个 FirebaseMessagingService,以接收对 onMessageReceived() 的调用,然后在收到通知消息时使用 NotificationManager 手动创建通知进来了。

来自 the documentation :

Firebase notifications behave differently depending on the foreground/background state of the receiving app. If you want foregrounded apps to receive notification messages or data messages, you’ll need to write code to handle the onMessageReceived callback.

关于android - 为什么调用 Firebase admin.messaging.sendToDevice() 的 Firebase 函数无法在 Android 设备上创建通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53734732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com