Есть ли способ поместить приложение PWA / TWA в поддомен - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь добавить 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 Ответ

1 голос
/ 23 мая 2019

Это возможно сделать. В качестве примера предположим, что вы разрабатываете 2 приложения:

И, поскольку эти приложения будут разными TWA, это также означает, что у вас будет другое имя пакета для каждого из них:

Файл 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. Если откроется Приложение 1 https://example.com/app1. Но если пользователь перейдет к https://example.com/app2,, они останутся в полноэкранном режиме. То же самое верно для Приложения 2, переходящего к / app1.
  2. Приложение 1 может запустить открытие TWA https://example.com/app2, и наоборот. Поэтому, если вы не доверяете всем PWA и соответствующим приложениям, такой подход не рекомендуется.

Если какой-либо из двух пунктов выше является проблемой, лучше использовать субдомены.

...