Firebase Cloud Messaging - регистрация не удалась - не удалось получить открытый ключ - PullRequest
0 голосов
/ 01 июля 2019

У меня есть угловое 7.0 веб-приложение, в котором есть облачные сообщения Firebase. Все работало нормально. Без изменений. Теперь, когда я спрашиваю разрешения для уведомления и запрашиваю токен Firebase, я получаю сообщение об ошибке - Регистрация не удалась - не удалось получить открытый ключ. Запуск веб-приложения в Chrome.

Я видел эту тему.

Ошибка регистрации работника службы Web Push - Ошибка регистрации - не удалось получить открытый ключ?

Попробовал предложенное. Без кубиков.

Раньше все это работало нормально. Я настроил FireBase облачные сообщения в Android и не было никаких проблем.

В сервисе регистрации все в порядке в хроме. Запуск последней версии (версия 75.0.3770.100 (официальная сборка) (64-разрядная версия))

    import { Injectable } from '@angular/core';
    import * as firebase from 'firebase';
    import { HttpClient, HttpHeaders } from '@angular/common/http';
    import { BehaviorSubject, Observable, of } from 'rxjs';
    import { catchError } from 'rxjs/operators';
    import { Globals } from './Globals';
    import { EventEmitterService } from './event-emitter.service';

    @Injectable({
    providedIn: 'root'
    })

    export class MessagingService {

    firebaseUrl = '';
    data: any;
    tokenRegistered: boolean;
    firebaseToken: Promise<string>;
    UserName: string;

    constructor(private http: HttpClient,
                private eventEmitterService: EventEmitterService) { }

    messaging = firebase.messaging();
    currentMessage = new BehaviorSubject(null);

    updateToken(user: string, token: string): Observable<boolean> {
        const body = { User: user, FireBaseCloudMessagingToken: token };
        const httpOptions = {
        headers: new HttpHeaders({
            'Content-Type': 'application/json'
        })
        };
        const response = this.http.post<boolean>(`${this.firebaseUrl}`, body, httpOptions)
        .pipe(
            catchError(this.handleError<boolean>('', false))
        );
        return response;
    }

    getPermission() {
        if (Notification.permission === 'granted') {
        return;
        }
            this.messaging.requestPermission()
        .then(() => {
            console.log('Notification permission granted.');
            const token = this.messaging.getToken();
            this.firebaseToken = token;
            return token;
        })
        .then(token => {
            this.updateToken(this.UserName, token).subscribe(resp => {
            this.tokenRegistered = resp;
            });
        })
        .catch((err) => {
            console.log('Unable to get permission to notify.', err.message);
        });
    }

    receiveMessage() {
        this.messaging.onMessage((payload) => {
        console.log('Message received in service worker.', payload);
        this.eventEmitterService.messageReceived(payload);
        this.currentMessage.next(payload);
        });
    }

    private handleError<T>(operation = 'operation', result?: T) {
        return (error: any): Observable<T> => {
        console.error(error); // log to console
        // better job of transforming error for user consumption
        console.log(`${operation} failed: ${error.message}`);
        // let the app keep running by returning an empty result.
        return of(result as T);
        };
    }

Ожидается: получение токена при разрешении обещания, Факт: регистрация не удалась - не удалось получить открытый ключ

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