Есть ли способ поместить приложение PWA/TWA в поддомен
Я пытаюсь добавить Progressive Web Apps на мой сервер. Я бы предпочел не создавать новый веб-сайт для каждого приложения. Я предпочитаю добавлять каждое приложение в субдомен вне веб-сайта, например: www.example.com/app1.
Проблема в том, что когда я запускаю генератор списка выписок здесь: https://developers.google.com/digital-asset-links/tools/generator
Это работает, только если я размещу assetlinks.json здесь: www.example.com. И если это так, то у меня может быть только одно приложение на www.example.com. Я попытался разместить assetlinks.json здесь 1) www.example.com/app1 2) www.example.com/app1/.well-known и 3) www.example.com . Единственное, что работает, это # 3.
Также добавили следующий фильтр намерений в androidmanifest.xml, и это не работает:
<intent-filter android:label="@string/app_name" android:autoVerify="true" >
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/>
<!-- Edit android:host to handle links to the target URL-->
<data android:scheme="https"
android:host="example.com"
android:pathPrefix="/app1" />
</intent-filter>
Я не могу поверить, что у вас должен быть свой веб-сайт для каждого прогрессивного веб-приложения. Какие-либо предложения?
1 ответ
Это возможно сделать. В качестве примера предположим, что вы разрабатываете 2 приложения:
И, поскольку эти приложения будут разными TWA, это также означает, что у вас будет другое имя пакета для каждого из них:
- com.example.app1, который запускает https://example.com/app1
- com.example.app2, который запускает https://example.com/app2
Файл assetlinks.json должен быть доступен по адресу https://example.com/.well-known/assetlinks.json и должен содержать список обоих приложений:
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target" : { "namespace": "android_app", "package_name": "com.example.app1",
"sha256_cert_fingerprints": ["<APP_1_FINGERPRINT>"] }
},
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target" : { "namespace": "android_app", "package_name": "com.example.app2",
"sha256_cert_fingerprints": ["<APP_2_FINGERPRINT>"] }
}
]
Каждое приложение будет иметь свое собственное объявление asset_statements, связывающее приложение с авторизованным источником:
[{ "relation": ["delegate_permission/common.handle_all_urls"],
"target": {"namespace": "web", "site": "https://example.com"}}]
Несколько вещей, о которых нужно знать:
- Если приложение 1 откроется https://example.com/app1. Но если пользователь перейдет на https://example.com/app2, он останется в полноэкранном режиме. То же самое верно для Приложения 2, переходящего к /app1.
- Приложение 1 может запустить TWA, открыв https://example.com/app2, и наоборот. Поэтому, если вы не доверяете всем PWA и соответствующим приложениям, такой подход не рекомендуется.
Если какой-либо из двух пунктов выше является проблемой, лучшим решением будет использование поддоменов.