You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-deep-linking.md
+40-39Lines changed: 40 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,8 +9,8 @@ description: "How to implement deep linking in your PWA Wrapper app to enable in
9
9
10
10
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:
11
11
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
***platform** — `Android`, `iOS`, `HarmonyOS`, `all`, or unset (unset or `all` applies to every platform)
48
50
49
51
### Common Deep Link Patterns
50
52
51
-
**Custom scheme (works everywhere, no domain ownership needed):**
53
+
Here is an example of a **Custom scheme** (works everywhere, no domain ownership needed):
52
54
53
55
* scheme: `myapp`
54
56
* host: `example.com`
55
57
* path fields: empty
56
58
* Result: catches `myapp://example.com/...`
57
59
58
-
**Universal Link / App Link (requires domain ownership):**
60
+
Here is an example of a **Universal Link / App Link scheme**(requires domain ownership):
59
61
60
62
* scheme: `https`
61
63
* host: `yourapp.com`
@@ -64,25 +66,25 @@ Each deep link entry requires:
64
66
65
67
## Part 3: What the Builder Configures Per Platform
66
68
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 files — the 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 files—the builder handles everything behind the scenes.
68
70
69
71
## Part 4: Domain Verification Files (Manual Setup Required)
70
72
71
73
{{% 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.
73
75
74
76
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.
75
77
{{% /alert %}}
76
78
77
79
### Android: assetlinks.json
78
80
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:
80
82
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`)
84
86
85
-
**Example structure:**
87
+
Here is an example structure:
86
88
87
89
```json
88
90
[
@@ -101,13 +103,13 @@ To find your app's SHA-256 fingerprint, use `jarsigner` or the Android Studio Bu
101
103
102
104
### iOS: apple-app-site-association
103
105
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:
105
107
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`)
109
111
110
-
**Example structure:**
112
+
Here is an example structure:
111
113
112
114
```json
113
115
{
@@ -127,10 +129,10 @@ The `appID` format is `TEAM_ID.BUNDLE_ID`. The `paths` array should match the pa
127
129
128
130
### Hosting the Files
129
131
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:
131
133
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.
134
136
135
137
### Testing File Accessibility
136
138
@@ -147,22 +149,21 @@ Both should return HTTP 200 with `Content-Type: application/json`.
147
149
148
150
Once a deep link is caught by the wrapper, it is routed into your app's runtime. The exact process depends on the platform:
149
151
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
155
154
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 %}}
159
158
160
159
## Common Deep Linking Pitfalls
161
160
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.
0 commit comments