Плагин Cordova FCM не получает токен и не регистрирует обработчики уведомлений - PullRequest
0 голосов
/ 23 сентября 2019

В документации по Ionic на странице плагина FCM есть небольшой пример того, как заставить его работать.Что ж, мне удалось установить плагин Cordova, и в моем телефоне появилось уведомление (да!), Но есть две вещи, которые не работают:

  1. Iневозможно получить токен от .getToken () или .onTokenRefresh ().Они просто ничего не возвращают.
  2. Когда я нажимаю на уведомление, отправленное с консоли Firebase или онлайн-тестера уведомлений, которое я имею, я вижу уведомление, но когда я нажимаю на него, мои обработчики неработа.

Это моя реализация:

@Injectable({
  providedIn: 'root'
})
export class PushHandlerService {


  constructor(
    private fcm: FCM,
    private platform: Platform
  ) {

  }

  initialize() {
    try {
      this.platform.ready().then(() => {
        console.log("Inicializando pushhandler")

        const user = Parse.User.current();
        this.fcm.onTokenRefresh().subscribe(token => {
          console.log("token received: ", token)
          user.set("FCMToken", token)
          user.save()
            .then(() => console.log("[PushHandler] Token saved in Parse's User"))
            .catch(err => console.log("[PushHandler] Error saving FCM token"));
        });
        this.setHandlers();

      });
  } catch(err) {
    console.log("[PushHandler] ERROR: ", err)
  }
}

setHandlers() {
  console.log("Setting up handlers")
  try {
    // Subscribe to schedule reminders

    // this.fcm.subscribeToTopic('scheduleReminders');
    this.fcm.onNotification().subscribe(data => {
      console.log("RECEIVED MESSAGE")
      if (data.wasTapped) {
        // User tapped in the push notification
        console.log("User tapped, data", data)
        alert(data);

      } else {
        // User did not tap; is it needed to notify him anyways?
        console.log("User did not tap, data", data)
        alert(data)
      }
    });
    console.log("[PushNotification] Handlers set up");
  } catch (err) {
    console.log("[PushHandler] ERROR: ", err)
  }
}

Это запускается другой службой при запуске приложения.Кажется, что работает весь код, кроме методов FCM: их обещания никогда не разрешаются, и я никогда не получаю никаких ошибок или сообщений вообще.

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