Почему функция Firebase, вызывающая Firebase, admin.messaging.sendToDevice () не может создавать уведомления на устройстве Android - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть приложение для Android, и я пытаюсь отправить уведомление на определенное устройство, на котором оно установлено, используя API-интерфейс Firebase Messaging из функции Firebase.Но уведомление никогда не появляется.Однако отправка вручную из консоли 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 я создалupdate_channel в основном действии onCreate () (потому что из того, что я собрал, для 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);
    }
}

И также установка его в качестве канала по умолчанию вМанифест:

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

Я не знаю, связана ли проблема с каналом, или я пропускаю шаг где-то, или что.

1 Ответ

0 голосов
/ 12 декабря 2018

Чтобы уведомления работали, когда приложение находится на переднем плане или в фоновом режиме, вы должны внедрить и зарегистрировать FirebaseMessagingService в своем приложении Android, чтобы получать вызовы onMessageReceived (), а затем создавать уведомления с помощью NotificationManager вручную, когда появляется уведомление

Начиная с документация :

Уведомления Firebase ведут себя по-разному в зависимости от состояния переднего плана / фона принимающего приложения.Если вы хотите, чтобы фоновые приложения получали уведомления или сообщения с данными, вам нужно написать код для обработки обратного вызова onMessageReceived.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...