Ошибки push-уведомлений в /logs

Мы довольно часто видим ошибку ниже в наших /logs (от десятков до сотен раз в день). Помимо того, что это связано с push-уведомлениями, я точно не знаю, что происходит и требует ли это внимания? Это происходит с последней стабильной версией.

Failed to send push notification : host: fcm.googleapis.com, #<Net::HTTPForbidden 403 Forbidden readbody=true> body: the key in the authorization header does not correspond to the sender ID used to subscribe this user. Please ensure you are using the correct sender ID and server Key from the Firebase console.

backtrace

webpush-1.0.0/lib/webpush/request.rb:165:in verify_response' webpush-1.0.0/lib/webpush/request.rb:32:in perform’
webpush-1.0.0/lib/webpush.rb:44:in payload_send' /var/www/discourse/app/services/push_notification_pusher.rb:79:in send_notification’
/var/www/discourse/app/services/push_notification_pusher.rb:25:in block in push' activerecord-6.0.3.1/lib/active_record/relation/delegation.rb:87:in each’
activerecord-6.0.3.1/lib/active_record/relation/delegation.rb:87:in each' /var/www/discourse/app/services/push_notification_pusher.rb:23:in push’
/var/www/discourse/app/jobs/regular/send_push_notification.rb:7:in execute' /var/www/discourse/app/jobs/base.rb:232:in block (2 levels) in perform’
rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:68:in with_connection' /var/www/discourse/app/jobs/base.rb:221:in block in perform’
/var/www/discourse/app/jobs/base.rb:217:in each' /var/www/discourse/app/jobs/base.rb:217:in perform’
sidekiq-6.0.7/lib/sidekiq/processor.rb:196:in execute_job' sidekiq-6.0.7/lib/sidekiq/processor.rb:164:in block (2 levels) in process’
sidekiq-6.0.7/lib/sidekiq/middleware/chain.rb:138:in block in invoke' /var/www/discourse/lib/sidekiq/pausable.rb:138:in call’
sidekiq-6.0.7/lib/sidekiq/middleware/chain.rb:140:in block in invoke' sidekiq-6.0.7/lib/sidekiq/middleware/chain.rb:143:in invoke’
sidekiq-6.0.7/lib/sidekiq/processor.rb:163:in block in process' sidekiq-6.0.7/lib/sidekiq/processor.rb:136:in block (6 levels) in dispatch’
sidekiq-6.0.7/lib/sidekiq/job_retry.rb:111:in local' sidekiq-6.0.7/lib/sidekiq/processor.rb:135:in block (5 levels) in dispatch’
sidekiq-6.0.7/lib/sidekiq.rb:37:in block in <module:Sidekiq>' sidekiq-6.0.7/lib/sidekiq/processor.rb:131:in block (4 levels) in dispatch’
sidekiq-6.0.7/lib/sidekiq/processor.rb:257:in stats' sidekiq-6.0.7/lib/sidekiq/processor.rb:126:in block (3 levels) in dispatch’
sidekiq-6.0.7/lib/sidekiq/job_logger.rb:13:in call' sidekiq-6.0.7/lib/sidekiq/processor.rb:125:in block (2 levels) in dispatch’
sidekiq-6.0.7/lib/sidekiq/job_retry.rb:78:in global' sidekiq-6.0.7/lib/sidekiq/processor.rb:124:in block in dispatch’
sidekiq-6.0.7/lib/sidekiq/logger.rb:10:in with' sidekiq-6.0.7/lib/sidekiq/job_logger.rb:33:in prepare’
sidekiq-6.0.7/lib/sidekiq/processor.rb:123:in dispatch' sidekiq-6.0.7/lib/sidekiq/processor.rb:162:in process’
sidekiq-6.0.7/lib/sidekiq/processor.rb:78:in process_one' sidekiq-6.0.7/lib/sidekiq/processor.rb:68:in run’
sidekiq-6.0.7/lib/sidekiq/util.rb:15:in watchdog' sidekiq-6.0.7/lib/sidekiq/util.rb:24:in block in safe_thread’

Та же проблема здесь :confused:

Интересный момент: если наши участники отключают и снова включают push-уведомления на Android, всё работает корректно несколько дней, но затем в логах появляется множество предупреждений :arrow_down:, и уведомления перестают работать.

Не удалось отправить push-уведомление: host: fcm.googleapis.com, #<Net::HTTPForbidden 403 Forbidden readbody=true>
body:
ключ в заголовке авторизации не соответствует ID отправителя, использованному для подписки этого пользователя. Убедитесь, что вы используете правильный ID отправителя и серверный ключ из консоли Firebase.

Теперь у меня всё работало нормально в течение двух недель, но после повторной сборки снова перестало работать. Я думаю, что это как-то связано с процессом пересборки приложения. Когда я обновляю через раздел администратора, после этого всё работает отлично. Единственное, что может исправить пуш-уведомления для Android — это отключение и повторное включение функции членами. И тогда всё будет работать до следующей пересборки.

Возможно ли, что проблема вызвана именно пересборкой?

Да, это была проблема на нашем форуме. Каждый раз, когда я пересобирал приложение, push-уведомления переставали работать. Но сейчас, похоже, на нашем форуме проблема решена. Я пересобрал приложение в третий раз, и push-уведомления продолжают отлично работать. :heart_eyes: Не знаю, в чём была проблема, но огромное спасибо за исправление! :slightly_smiling_face: