Сообщение FCM composer целевой сегмент пользователя имеет 0 пользователей - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть приложение Firebase для облачных сообщений, настроенное в Firebase для использования с Web Pu sh Уведомления.

Есть веб-приложение с необходимым Javascript для подписки и получения сообщений с использованием HTML страница и работник сервиса. Работник службы устанавливается должным образом.

Код веб-страницы инициализирует Firebase и вызывает messaging.getToken(), который возвращает токен. Я распечатал токен на консоль, чтобы использовать его для тестирования.

Использование сообщения Firebase composer, test сообщения, отправленные на этот токен, отправляются и принимаются правильно.

Однако попытка отправить сообщение с использованием основного потока Composer не работает. В разделе Target для него задано значение «Сегмент пользователя» с единственным условием: App => Текущее приложение Firebase.

Ожидаемый результат

В Composer - количество пользователей, подходящих для кампания должна быть 100%. При отправке уведомления оно принимается работником службы.

Фактический результат

Сообщение не получено. Количество подходящих пользователей отображается следующим образом:

0% потенциальных пользователей имеют право участвовать в этой кампании: 0 Composer dialog screenshot

Наведение над (?) показывает, что подписано 0 пользователей: popup showing

Почему нет потенциальных пользователей для этого уведомления? Я ожидаю, что там будет хотя бы 1 пользователь (я).

1 Ответ

0 голосов
/ 29 апреля 2020

Оказывается, чтобы это работало, вам необходимо активировать аналитику Firebase , для которой требуется Firebase SDK версии 7.0 или выше.

В случае, если это кому-нибудь пригодится, вот полный код, который я использовал для регистрации собственного сервисного работника и инициализации Firebase, что позволяет сервисному работнику получать уведомления pu sh от Firebase composer.

import * as firebase from 'firebase/app';
import 'firebase/messaging';
import 'firebase/analytics';

import { FIREBASE_CONFIG } from './constants';

const initFirebase = serviceWorker => {
  // Initialize Firebase
  firebase.initializeApp(FIREBASE_CONFIG);
  firebase.analytics();

  // Retrieve an instance of Firebase Messaging
  const messaging = firebase.messaging();
  messaging.useServiceWorker(serviceWorker);
  messaging.getToken();
};

const registerServiceWorker = (path, scope) => {
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register(path, { scope: `/${scope}/` }).then(
      registration => {
        initFirebase(registration);
      },
      err => {
        console.log('ServiceWorker registration failed: ', err);
      }
    );
  }
};
...