В документации по Ionic на странице плагина FCM есть небольшой пример того, как заставить его работать.Что ж, мне удалось установить плагин Cordova, и в моем телефоне появилось уведомление (да!), Но есть две вещи, которые не работают:
- Iневозможно получить токен от .getToken () или .onTokenRefresh ().Они просто ничего не возвращают.
- Когда я нажимаю на уведомление, отправленное с консоли 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: их обещания никогда не разрешаются, и я никогда не получаю никаких ошибок или сообщений вообще.