Я пытаюсь настроить нативные уведомления для TWA моего собственного хостинга Discourse, но столкнулся с очень странной «мягкой ошибкой» при проверке Digital Asset Link.
Вот точные симптомы:
-
Приложение запускается и работает на весь экран без адресной строки, что указывает на частичную работоспособность asset link.
-
Однако при каждом запуске появляется всплывающее сообщение «Работает в Chrome».
-
Самое главное: когда 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?
Я исчерпал возможности диагностики с клиентской стороны. Любое понимание глубокой конфигурации сервера было бы очень ценным.