Files
element-x-android/docs/deeplink.md
T
joel.poyet e4ca0e6208 feat(deeplink): point deeplinks at HealthChat hosts
Claims app.healthchat.ch and to.healthchat.ch as App Links, registers the
healthchat:// scheme, and drops the unreachable mobile.element.io handling.
2026-10-19 08:46:58 +02:00

3.2 KiB

HealthChat Android deeplink

Introduction

HealthChat Android supports deep linking to specific screens in the application. This document explains how to use deep links in HealthChat Android.

Two hosts are claimed as verified Android App Links, and each one must serve a matching asset links file listing ch.healthchat.element and the SHA-256 of the Play app signing certificate:

Host Asset links file Served from
app.healthchat.ch https://app.healthchat.ch/.well-known/assetlinks.json the element-web fork (apps/web/res/.well-known/assetlinks.json)
to.healthchat.ch https://to.healthchat.ch/.well-known/assetlinks.json the healthchat-matrix.to fork (generated by scripts/build.js)

Link to a user:

https://to.healthchat.ch/#/@alice:healthchat.ch https://app.healthchat.ch/#/user/@alice:healthchat.ch

Link to a room by id or alias:

https://to.healthchat.ch/#/!roomid:healthchat.ch https://app.healthchat.ch/#/room/#healthchat:healthchat.ch

Link to a room with a specific event:

https://app.healthchat.ch/#/room/!roomid:healthchat.ch/$eventid

The HealthChat matrix.to deployment hands out a custom scheme to Android, which is registered too:

healthchat://room/%23healthchat%3Ahealthchat.ch healthchat://user/%40alice%3Ahealthchat.ch

Standard Matrix URIs also work:

matrix:r/healthchat:healthchat.ch

Only the two hosts above are declared in the manifest, so only those open the app from a browser. DefaultMatrixToConverter is host-agnostic though: any URL using the /#/room/, /#/user/ or /#/group/ path, as well as plain matrix.to links, are still resolved once they reach the app (for instance when tapped inside a message).

Finally, notifications use an internal deep link that is not browsable:

healthchat://open/{sessionId}/{roomId}/{eventId}

Developer tools

Using an Android 12 or higher emulator

Ensure links verification is enabled

adb shell am compat enable 175408749 ch.healthchat.element.debug  

Reset link verifications for the given package id

adb shell pm set-app-links --package ch.healthchat.element.debug 0 all 

Force the package id links to be verified

adb shell pm verify-app-links --re-verify ch.healthchat.element.debug 

Print the link verification of the package id

adb shell pm get-app-links ch.healthchat.element.debug
  ch.healthchat.element.debug:
    ID: e2ece472-c266-4bf0-829c-be79959a6270
    Signatures: [B0:B0:51:DC:56:5C:81:2F:E1:7F:6F:3E:94:5B:4D:79:04:71:23:AB:0D:A6:12:86:76:9E:B2:94:91:97:13:0E]
    Domain verification state:
      app.healthchat.ch: verified
      to.healthchat.ch: verified

Verification only succeeds if the signature above is listed in the asset links files. Release builds are signed by Google Play, so use the app signing certificate SHA-256 from the Play Console. For a debug build, add the fingerprint of app/signature/debug.keystore (alias androiddebugkey) to both files, or test with healthchat:// links instead, which need no verification.