TWA - Digital Asset Link OK but address bar still visible

Viewed 2511

I developed a Progressive Web App and I want to publish it in the Play Store as a Trusted Web Activity. It's https://www.bagnoadriatico.it

Following this guide https://developers.google.com/web/updates/2019/02/using-twa

I downloaded the example from https://github.com/GoogleChromeLabs/svgomg-twa

I changed the configuration with

def twaManifest = [
    applicationId: 'com.simovinci.bagnoadriatico',
    hostName: 'www.bagnoadriatico.it', // The domain being opened in the TWA.
    launchUrl: '/mobile', // The start path for the TWA. Must be relative to the domain.
    name: 'BagnoAdriatico di Casalborsetti', // The name shown on the Android Launcher.
    themeColor: '#ff5c14', // The color used for the status bar.
    backgroundColor: '#ffff00' // The color used for the splash screen background.
]

then I signed the apk, build and published on play store.

In the website I created the association by Digital Asset Link https://www.bagnoadriatico.it/.well-known/assetlinks.json The "Statement List Generator and Tester" say that the operation was successful "Success! Host www.bagnoadriatico.it grants app deep linking to com.simovinci.bagnoadriatico." https://developers.google.com/digital-asset-links/tools/generator

The Address bar still visible, I don't know why.

https://www.bagnoadriatico.it/mobile returns a 200 http code. The PWA is 100% Lighthouse validated. The key finger print is right

========================================

I tried to set launchUrl = "/" (before I removed the 302 to mobile version) but nothing changed. The address bar is still visible.

4 Answers

The assetlinks.jsonfile is actually wrong. It contains both the Android markup and the web markup:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "web",
    "site": "https://www.bagnoadriatico.it"
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target" : { "namespace": "android_app", "package_name": "com.simovinci.bagnoadriatico",
               "sha256_cert_fingerprints": ["DA:E2:7C:57:8F:B8:28:ED:C0:00:70:7C:52:1F:95:8E:50:E6:A9:58:50:B0:FB:9A:F1:99:78:C9:D4:6B:72:45"] }
}]

It would be enough for assetlinks.json to contain the following statement:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target" : { "namespace": "android_app", "package_name": "com.simovinci.bagnoadriatico",
               "sha256_cert_fingerprints": ["DA:E2:7C:57:8F:B8:28:ED:C0:00:70:7C:52:1F:95:8E:50:E6:A9:58:50:B0:FB:9A:F1:99:78:C9:D4:6B:72:45"] }
}]

I'm not sure if this is the root cause for the address bar being visible. I'd also recommend double-checking:

  • Double check the fingerprints
  • Make sure there's no redirect to domain not validated when opening the URL.

Let me know if any of those helps.

I found this issue only on emulator. It works perfectly on real device.

Issue was emulator does not load the signed APK.To load the signed apk on emulator add below code in gradle file

signingConfigs{
        debug{
            keyAlias 'your key alias'
            keyPassword 'your keypassword'
            storeFile file('keystore path')
            storePassword 'your storepassword'
        }
    }
    buildTypes {
        debug{
            signingConfig signingConfigs.debug
        }
 }  

Source

After lots of debugging, I finally found the reason why the address bar suddenly showed up again:

We added an API call to one of our other domains. This basically broke the "trust" of the app. After adding the assetlinks.json to the API domain as well, the app started hiding the URL bar again.

Related