Как push-уведомление будет работать с лямбда-функцией Gatsby + Netlify + Netlify

Следуя инструкциям Google по push-уведомлениям, я добавил возможность push-уведомлений на свой веб-сайт PWA с поддержкой Gatsby + Netlify.

работает, но с ошибкой.

Шаг 1 Со стороны клиента он подписывается на регистрацию работника службы.

swRegistration.pushManager.subscribe({
  userVisibleOnly: true
})
.then(subscription => {
  console.log('User is subscribed:', subscription);
  isSubscribed = true;
})
.catch(err => {
  if (Notification.permission === 'denied') {
    console.warn('Permission for notifications was denied');
  } else {
    console.error('Failed to subscribe the user: ', err);
  }
});

Шаг 2, затем со стороны сервера (функция Netlify Lambda) нам нужно вставить объект регистрации, который распечатывается со стороны клиента из этой строки кода.

.then(подписка => { console.log('Пользователь подписан:', подписка); isSubscribed = true; })

чтобы он работал (серверная / лямбда-функция):

const webPush = require('web-push');

const pushSubscription = YOUR_SUBSCRIPTION_OBJECT;

// TODO 4.3a - include VAPID keys

const payload = 'Here is a payload!';

const options = {
  TTL: 60,

  // TODO 4.3b - add VAPID details
  vapidDetails: {
    subject: "mailto:my@gmail.com",
    publicKey: vapidPublicKey,
    privateKey: vapidPrivateKey,
  },
};

webPush.sendNotification(
  pushSubscription,
  payload,
  options
);

Вы, наверное, уже заметили проблему.

При локальной разработке я могу запустить свой сайт Gatsby PWA,

gatsby build && gatsby serve

затем он распечатывает объект регистрации со стороны клиента Gatsby PWA. Затем я могу вставить его (объект регистрации) в лямбда-функцию Netlify, а затем запустить свою функцию Netlify Lambda с помощью

netlify dev

Но при развертывании веб-сайта Garsby + Netlify PWA лямбда-функция развертывается вместе с PWA, тогда как я могу убедиться, что лямбда-функция использует регистрацию, полученную со стороны клиента, что происходит только тогда, когда пользователь попадает на веб-сайт после развертывания?

0 ответов

Другие вопросы по тегам