Как отключить обмен сообщениями Nuxt-Fire (fcm) на неподдерживаемых устройствах (например, WebKit Safari)? - PullRequest
1 голос
/ 09 ноября 2019

У меня есть небольшой сайт Nuxt SSR с push-уведомлениями через FCM. Для push-уведомлений (Push-API) я использую nuxt-fire . На Windows и Android в Chrome (Blink Engine) или FireFox (Gecko Engine) это прекрасно работает. Теперь у друга проблема в том, что на сайте не отображается контент. Он использует устройства Apple. У Apple есть требование к WebKit, поэтому Chrome также использует WebKit в качестве движка под Apple. WebKit не поддерживает Push-API, но имеет свое собственное решение, APN (Apple Push Notification).

Сообщение об ошибке в WebKit выглядит следующим образом: «FirebaseError: Messaging: этот браузер не поддерживает APIтребуется для пользователя Firebase SDK. (Messaging / Unsupported-Browser) "

Теперь я ищу способ не загружать сообщения Firebase в Nuxt-Fire в Nuxt.js на неподдерживаемых устройствах / движках (ИнтернетExplorer также не поддерживает Push API). Вот возможность в JS для проверки поддерживаемых устройств / механизмов:

if (firebase.messaging.isSupported())
    const messaging = firebase.messaging();
}

Но как и где я могу использовать это в Nuxt.js с nuxt-fire?

В nuxt. config.js Я настраиваю модуль nuxt-fire следующим образом:

    [
      'nuxt-fire',
      {
        config: {
          development: {
            ...
          },
          production: {
            ...
          }
        },
        useOnly: ['storage', 'messaging'],
        customEnv: false,
      }
    ]

Есть ли способ сделать это здесь, в nuxt.config.js? или как плагин / промежуточное ПО?

Большое спасибо и наилучшие пожелания,

Jakob

1 Ответ

1 голос
/ 10 ноября 2019

Обновление - Решение

Оказывается, проблема может быть исправлена ​​с помощью переустановки модуля . Чтобы убедиться, что он установлен правильно, удалите папку node_modules , remove package-lock.json , а затем повторно запустите npm i - это должно исправить.

Возможная причина:

В версии 2.4.0 мы изменили структуру папок плагина, см. Замечания к выпуску . Мы упоминаем в примечаниях к выпуску, чтобы переустановить пакет, если появляется Template src not found. По какой причине ваше приложение заняло 2 npm install, чтобы исправить? Возможно, package-lock.json не был удален, я могу подумать еще о том, что на вашем хосте могло выполняться кэширование узловых модулей (например, в Netlify вы должны сделать Clear Cache and trigger deploy), что может быть еще одной причиной, по которой развернутое приложениесломался.


Старый ответ

Паскаль из nuxt-fire здесь.

Как вы можете видеть здесь , мы уже делаем if firebase.messaging.isSupported() проверьте при настройке $ fireMess для вас. Если браузер не поддерживает Firebase Messaging, $ fireMess будет undefined.

Так что вам нужно будет сделать перед вызовом $fireMess.requestPermission() или getToken() (например, в вашем плагине обмена сообщениями или где бы вы ни делали)это?), чтобы проверить, существует ли $fireMess, вот так:

if (!this.$fireMess) {
   // No browser support
   return
}

Так как я не знаю, как именно вы реализовали Firebase Messaging, трудно сказать, где именно находятся проблемы - но это можетбудь то.

Имейте в виду, что все, что делает nuxt-fire - это вставляет $ fireMess в глобальный контекст, мы не делаем никакой инициализации.

Если это не решит вашу проблему, выдумайте, что что-то может быть, не стесняйтесь создавать проблемы на нашей странице GitHub , мы будем рады разобраться в этом.

Надеюсь, что это помогло.

Pascalиз nuxt-fire здесь.

Как вы можете видеть здесь , мы уже выполняем проверку if firebase.messaging.isSupported() при настройке $ fireMess для вас. Если браузер не поддерживает Firebase Messaging, $ fireMess будет undefined.

Так что вам нужно будет сделать перед вызовом $fireMess.requestPermission() или getToken() (например, в вашем плагине обмена сообщениями или где бы вы ни делали)это?), чтобы проверить, существует ли $fireMess, вот так:

if (!this.$fireMess) {
   // No browser support
   return
}

Так как я не знаю, как именно вы реализовали Firebase Messaging, трудно сказать, где именно находятся проблемы - но это можетбудь то.

Имейте в виду, что все, что делает nuxt-fire - это вставляет $ fireMess в глобальный контекст, мы не делаем никакой инициализации.

Если это не решит вашу проблему, выдумайте, что что-то может быть, не стесняйтесь создавать проблемы на нашей странице GitHub Issues , мы будем рады разобраться в этом.

Надеюсь, что это помогло.

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