Skip to content

Commit af6703e

Browse files
committed
edit and format
1 parent b23a828 commit af6703e

1 file changed

Lines changed: 40 additions & 39 deletions

File tree

content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-deep-linking.md

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ description: "How to implement deep linking in your PWA Wrapper app to enable in
99

1010
Deep linking enables users to jump directly to specific content in your app via URLs or schemes. PWA Wrapper supports two independent deep linking flows:
1111

12-
* **Outbound**your Mendix app opens a URL or deep link (e.g., jumping to another app)
13-
* **Inbound** the operating system launches your wrapped app via a registered deep link scheme, and the wrapper routes it into your app content
12+
* Outbound: your Mendix app opens a URL or deep link (for example, jumping to another app)
13+
* Inbound: the operating system launches your wrapped app via a registered deep link scheme, and the wrapper routes it into your app content
1414

1515
This guide covers both flows.
1616

@@ -24,7 +24,9 @@ OpenDeepLink(url: string): Promise<boolean>
2424

2525
### Behavior
2626

27-
**iOS and Android:** Returns `true` or `false` based on success. Catches errors and returns `false` on failure.
27+
Behavior works as follows:
28+
29+
* **iOS and Android** — This returns `true` or `false` based on success, and catches errors and returns `false` on failure.
2830

2931
### Important Caveat
3032

@@ -36,26 +38,26 @@ Configure deep link schemes and hosts in the PWA Wrapper Builder during the app
3638

3739
### Adding a Deep Link Entry
3840

39-
Each deep link entry requires:
41+
Each deep link entry requires the following:
4042

41-
* **scheme** (required) — e.g., `myapp`, `pwa`, or `https`/`http` for universal/app links
42-
* **host** (required) — domain or authority to match, e.g., `example.com`
43-
* **path** fields (optional, pick at most one):
44-
* **path**exact path to match (e.g., `/profile`)
45-
* **pathStartWith**path prefix to match (e.g., `/jump` catches `/jump/profile`)
46-
* **linkFeature**free-text label (metadata only, affects HarmonyOS builds)
43+
* **scheme** (required) — For example `myapp`, `pwa`, or `https`/`http` for universal/app links
44+
* **host** (required) — Domain or authority to match, for example `example.com`
45+
* **path** fields (optional, pick one at most):
46+
* **path**Exact path to match (for example `/profile`)
47+
* **pathStartWith**Path prefix to match (for example `/jump` catches `/jump/profile`)
48+
* **linkFeature**Free-text label (metadata only, affects HarmonyOS builds)
4749
* **platform**`Android`, `iOS`, `HarmonyOS`, `all`, or unset (unset or `all` applies to every platform)
4850

4951
### Common Deep Link Patterns
5052

51-
**Custom scheme (works everywhere, no domain ownership needed):**
53+
Here is an example of a **Custom scheme** (works everywhere, no domain ownership needed):
5254

5355
* scheme: `myapp`
5456
* host: `example.com`
5557
* path fields: empty
5658
* Result: catches `myapp://example.com/...`
5759

58-
**Universal Link / App Link (requires domain ownership):**
60+
Here is an example of a **Universal Link / App Link scheme** (requires domain ownership):
5961

6062
* scheme: `https`
6163
* host: `yourapp.com`
@@ -64,25 +66,25 @@ Each deep link entry requires:
6466

6567
## Part 3: What the Builder Configures Per Platform
6668

67-
The PWA Wrapper builder automatically registers your configured deep links with the operating system. You do not need to manually edit any native configuration filesthe builder handles everything behind the scenes.
69+
The PWA Wrapper builder automatically registers your configured deep links with the operating system. You do not need to manually edit any native configuration filesthe builder handles everything behind the scenes.
6870

6971
## Part 4: Domain Verification Files (Manual Setup Required)
7072

7173
{{% alert color="warning" %}}
72-
For `https` scheme links (Android App Links and iOS Universal Links), the operating system requires verification files hosted on your own domain. The PWA Wrapper builder does NOT generate or host these files—you must create and publish them yourself.
74+
For `https` scheme links (Android App Links and iOS Universal Links), the operating system requires verification files hosted on your own domain. The PWA Wrapper builder does not generate or host these files—you must create and publish them yourself.
7375

7476
Without these verification files, `https` links will open in the browser instead of the app. Android may display a disambiguation dialog; iOS Universal Links will fail silently.
7577
{{% /alert %}}
7678

7779
### Android: assetlinks.json
7880

79-
Create and host `https://yourdomain.com/.well-known/assetlinks.json` on your web server. The file must be:
81+
Create and host `https://yourdomain.com/.well-known/assetlinks.json` on your web server. The file must meet the following criteria:
8082

81-
* Valid JSON
82-
* Served with `Content-Type: application/json`
83-
* Accessible via `https` only (not `http`)
83+
* Have a valid JSON
84+
* Be served with `Content-Type: application/json`
85+
* Be accessible via `https` only (not `http`)
8486

85-
**Example structure:**
87+
Here is an example structure:
8688

8789
```json
8890
[
@@ -101,13 +103,13 @@ To find your app's SHA-256 fingerprint, use `jarsigner` or the Android Studio Bu
101103

102104
### iOS: apple-app-site-association
103105

104-
Create and host `https://yourdomain.com/.well-known/apple-app-site-association` on your web server. The file must be:
106+
Create and host `https://yourdomain.com/.well-known/apple-app-site-association` on your web server. The file must meet the following criteria:
105107

106-
* Valid JSON (no `.json` extension in the path)
107-
* Served with `Content-Type: application/json`
108-
* Accessible via `https` only (not `http`)
108+
* Have a valid JSON (no `.json` extension in the path)
109+
* Be served with `Content-Type: application/json`
110+
* Be accessible via `https` only (not `http`)
109111

110-
**Example structure:**
112+
Here is an example structure:
111113

112114
```json
113115
{
@@ -127,10 +129,10 @@ The `appID` format is `TEAM_ID.BUNDLE_ID`. The `paths` array should match the pa
127129

128130
### Hosting the Files
129131

130-
The `.well-known` directory must be accessible at the root of your domain via `https`. The typical approach is:
132+
The `.well-known` directory must be accessible at the root of your domain via `https`. The two typical approaches are:
131133

132-
* **Mendix Cloud:** Upload the verification files to your Mendix Cloud environment's static file directory. Refer to [Mendix Cloud documentation](/developerportal/deploy/) for details on serving static files, or contact Mendix Support.
133-
* **Custom Domain or External Hosting:** If your Mendix app is behind a reverse proxy or hosted on a custom domain, ensure the `.well-known` directory is properly configured to serve these files at the domain root.
134+
* Mendix Cloud Upload the verification files to your Mendix Cloud environment's static file directory. Refer to [Mendix Cloud documentation](/developerportal/deploy/) for details on serving static files, or contact Mendix Support.
135+
* Custom Domain or External Hosting If your Mendix app is behind a reverse proxy or hosted on a custom domain, ensure the `.well-known` directory is properly configured to serve these files at the domain root.
134136

135137
### Testing File Accessibility
136138

@@ -147,22 +149,21 @@ Both should return HTTP 200 with `Content-Type: application/json`.
147149

148150
Once a deep link is caught by the wrapper, it is routed into your app's runtime. The exact process depends on the platform:
149151

150-
**Android:**
151-
152-
The wrapper loads the incoming deep link in the webview.
153-
154-
**iOS:**
152+
* Android: the wrapper loads the incoming deep link in the webview
153+
* iOS: The wrapper loads the incoming deep link in the webview
155154

156-
The wrapper loads the incoming deep link in the webview.
157-
158-
**Implication for your app:** Your Mendix app's routing (pages, deep-link microflows, etc.) must be configured to handle the deep link URL.
155+
{{% alert color="info" %}}
156+
One implication of deep links is that your Mendix app's routing (pages, deep-link microflows, etc.) must be configured to handle the deep link URL.
157+
{{% /alert %}}
159158

160159
## Common Deep Linking Pitfalls
161160

162-
* **Missing verification files** — forgetting to create and host `assetlinks.json` (Android) or `apple-app-site-association` (iOS) for `https` scheme links is the most common integration failure.
163-
* **Using https without domain ownership**`https` scheme links require that you own and control the domain; do not use `https` for domains you do not own.
164-
* **Misinterpreting the OpenDeepLink return value** — the boolean result only indicates the call succeeded, not whether the target app successfully opened or handled the link.
165-
* **Mismatched path configuration** — ensure your `path` and `pathStartWith` values match the actual Mendix page URLs or deep-link microflow entry points your app exposes.
161+
When employing deep linking, watch out for the following pitfalls:
162+
163+
* Missing verification files — Forgetting to create and host `assetlinks.json` (Android) or `apple-app-site-association` (iOS) for `https` scheme links is the most common integration failure.
164+
* Using https without domain ownership — `https` scheme links require that you own and control the domain; do not use `https` for domains you do not own.
165+
* Misinterpreting the `OpenDeepLink` return value — The Boolean result only indicates the call succeeded, not whether the target app successfully opened or handled the link.
166+
* Mismatched path configuration — Ensure your `path` and `pathStartWith` values match the actual Mendix page URLs or `deep-link` microflow entry points your app exposes.
166167

167168
## Read More
168169

0 commit comments

Comments
 (0)