Самохостинг TWA в состоянии «мягкого сбоя»: полноэкранный интерфейс работает, но нативное делегирование не работает

Я пытаюсь настроить нативные уведомления для TWA моего собственного хостинга Discourse, но столкнулся с очень странной «мягкой ошибкой» при проверке Digital Asset Link.

Вот точные симптомы:

  1. Приложение запускается и работает на весь экран без адресной строки, что указывает на частичную работоспособность asset link.

  2. Однако при каждом запуске появляется всплывающее сообщение «Работает в Chrome».

  3. Самое главное: когда PWA запрашивает разрешение на уведомления, отображается браузерное уведомление, а не нативное диалоговое окно Android. Это доказывает, что делегирование нативного API не работает.

Это поведение наблюдается на всех тестовых устройствах (Android 12 и 13) и для APK, сгенерированных как Bubblewrap, так и PWABuilder от Microsoft.

После тщательной отладки я подтвердил, что вся моя клиентская конфигурация и конфигурация общедоступного сервера выглядят безупречно. Проблема, похоже, кроется в тонкой серверной ошибке, которая влияет только на валидатор Android.

Вот что я уже проверил:

  • Ключ подписи и assetlinks.json: Отпечаток SHA-256 моего android.keystore на 100% точно совпадает с отпечатком в моем актуальном файле /.well-known/assetlinks.json.

  • Ответ сервера: Мой сервер отдает URL assetlinks.json со статусом 200 OK, правильным типом контента application/json и без блокирующих заголовков CORS при проверке стандартными веб-инструментами.

  • Конфигурация Android-приложения: Сгенерированный AndroidManifest.xml корректен и содержит стандартный com.google.androidbrowserhelper.trusted.DelegationService.

  • Настройки администратора Discourse: Мои настройки безопасности администратора для cors origins и `Allowed crawler user agents`` пусты.

Учитывая такое специфическое поведение «мягкой ошибки», мой вопрос:

Существует ли известное правило Nginx, настройка брандмауэра или тонкая проблема с ответом сервера (например, небольшая задержка или нестандартный заголовок) в конфигурации по умолчанию для самостоятельного хостинга Discourse, которая могла бы заставить валидатор Android предоставить «частичное доверие» (разрешая интерфейс на весь экран), но отказать в более высоком уровне доверия, необходимом для делегирования нативного API?

Я исчерпал возможности диагностики с клиентской стороны. Любое понимание глубокой конфигурации сервера было бы очень ценным.