Skip to content

Commit 61bb9d2

Browse files
committed
update pwa docs
1 parent 784764e commit 61bb9d2

16 files changed

Lines changed: 567 additions & 16 deletions

File tree

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ This PWA Wrapper documentation section includes the following topics:
3030
* Signing reference: [Sign PWA Wrapper Apps](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/sign-pwa-wrapper-apps/) explains the signing step in the build flow
3131
* Capabilities guide: [PWA Wrapper Capabilities](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-capabilities/)
3232
* Limitations: [PWA Wrapper Limitations](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-limitations/)
33-
* Deep linking guide: [PWA Wrapper Deep Linking](/refguide/mobile/pwa-wrapper/pwa-wrapper-deep-linking/) explains how to handle inbound and outbound deep links
34-
* Security and network access reference: [PWA Wrapper Security and Network Access](/refguide/mobile/pwa-wrapper/pwa-wrapper-security/) describes what the extension downloads, what local paths it scans, and which binaries it bundles
35-
* Troubleshooting: [Troubleshoot PWA Wrapper](/refguide/mobile/pwa-wrapper/pwa-wrapper-troubleshooting/) lists known issues and solutions
33+
* Deep linking guide: [PWA Wrapper Deep Linking](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-deep-linking/) explains how to handle inbound and outbound deep links
34+
* Security and network access reference: [PWA Wrapper Security and Network Access](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security/) describes what the extension downloads, what local paths it scans, and which binaries it bundles
35+
* Troubleshooting: [Troubleshoot PWA Wrapper](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting/) lists known issues and solutions
3636

3737
## Typical Use Cases
3838

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
---
22
title: "PWA Wrapper Deep Linking"
3-
url: /refguide/mobile/pwa-wrapper/pwa-wrapper-deep-linking/
3+
url: /refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-deep-linking/
44
weight: 40
55
description: "How to implement deep linking in your PWA Wrapper app to enable inbound and outbound URL handling."
6+
aliases:
7+
- /refguide/mobile/pwa-wrapper/pwa-wrapper-deep-linking/
68
---
79

810
## Introduction

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
---
22
title: "PWA Wrapper Security and Network Access"
3-
url: /refguide/mobile/pwa-wrapper/pwa-wrapper-security/
3+
url: /refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security/
44
weight: 50
55
description: "Describes the network access and local filesystem scanning behavior of PWA Wrapper for security and IT reviewers."
6+
aliases:
7+
- /refguide/mobile/pwa-wrapper/pwa-wrapper-security/
68
---
79

810
## Introduction

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
---
22
title: "Troubleshoot PWA Wrapper"
3-
url: /refguide/mobile/pwa-wrapper/pwa-wrapper-troubleshooting/
3+
url: /refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting/
44
weight: 60
55
description: "This guide lists known issues for PWA Wrapper, and how to solve them."
6+
aliases:
7+
- /refguide/mobile/pwa-wrapper/pwa-wrapper-troubleshooting/
68
---
79

810
## Introduction

content/en/docs/refguide/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,4 +216,4 @@ When testing, verify behavior on physical Android and iOS devices to ensure noti
216216
* [PWA Wrapper](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/)
217217
* [PWA Wrapper Capabilities](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-capabilities/)
218218
* [PWA Wrapper Limitations](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-limitations/)
219-
* [PWA Wrapper Deep Linking](/refguide/mobile/pwa-wrapper/pwa-wrapper-deep-linking/)
219+
* [PWA Wrapper Deep Linking](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-deep-linking/)

content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/_index.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ This PWA Wrapper documentation section includes the following topics:
2828
* Signing reference: [Sign PWA Wrapper Apps](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/sign-pwa-wrapper-apps/) explains the signing step in the build flow
2929
* Capabilities guide: [PWA Wrapper Capabilities](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-capabilities/)
3030
* Limitations: [PWA Wrapper Limitations](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-limitations/)
31+
* Deep linking guide: [PWA Wrapper Deep Linking](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-deep-linking/) explains how to handle inbound and outbound deep links
32+
* Security and network access reference: [PWA Wrapper Security and Network Access](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security/) describes what the extension downloads, what local paths it scans, and which binaries it bundles
33+
* Troubleshooting: [Troubleshoot PWA Wrapper](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting/) lists known issues and solutions
3134

3235
## Typical Use Cases
3336

@@ -49,7 +52,7 @@ The standard workflow is as follows:
4952

5053
## Limitations
5154

52-
Keep the following beta limitations in mind:
55+
Keep the following limitations in mind:
5356

5457
* Some capabilities depend on physical device hardware and cannot be validated reliably on simulators or emulators
5558
* Platform support varies for individual capabilities, so not every capability behaves the same way on Android and iOS

content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/build-pwa-wrapper-apps.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,19 @@ To generate an Android APK, do the following:
3434
* supported devices
3535
* screen orientation
3636

37-
{{< figure src="/attachments/refguide/mobile/pwa-wrapper/app-information.png" alt="Android app information step in the PWA Wrapper builder" max-width="500px" >}}
37+
{{< figure src="/attachments/refguide10/mobile/pwa-wrapper/app-information.png" alt="Android app information step in the PWA Wrapper builder" max-width="500px" >}}
3838

3939
3. Review the available permissions and enable only the permissions related to the capabilities your app uses. For capability-to-permission guidance, see [Capability to Permission Mapping](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-capabilities/#capability-to-permission-mapping).
4040

41-
{{< figure src="/attachments/refguide/mobile/pwa-wrapper/permissions.png" alt="Permissions step in the PWA Wrapper builder" max-width="500px" >}}
41+
{{< figure src="/attachments/refguide10/mobile/pwa-wrapper/permissions.png" alt="Permissions step in the PWA Wrapper builder" max-width="500px" >}}
4242

4343
4. Go to the signing step and do one of the following:
4444

4545
* choose an existing Android signing configuration
4646
* create a new signing configuration if this is the first Android build for the app; for platform-specific details, see [Sign Android Apps on Windows and macOS](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/sign-pwa-wrapper-apps/#sign-android-apps-on-windows-and-macos)
4747
5. Continue to the packaging step and click **Generate Package**.
4848

49-
{{< figure src="/attachments/refguide/mobile/pwa-wrapper/package-android-app.png" alt="Packaging step for building an Android APK with PWA Wrapper" max-width="500px" >}}
49+
{{< figure src="/attachments/refguide10/mobile/pwa-wrapper/package-android-app.png" alt="Packaging step for building an Android APK with PWA Wrapper" max-width="500px" >}}
5050

5151
6. Wait for the build to complete.
5252
7. Open the output directory from the builder.

content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/install-pwa-wrapper.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Before installing [PWA Wrapper](https://marketplace.mendix.com/link/component/25
2121

2222
* You are using Mendix Studio Pro 10.24 or later
2323

24-
Platform-specific build and testing requirements such as Xcode or Xcode Command Line Tools, optional Android emulators or iOS simulators, and Apple signing assets are described in [Build PWA Wrapper Apps](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/build-pwa-wrapper-apps/).
24+
Platform-specific build and testing requirements such as Xcode or Xcode Command Line Tools, optional Android emulators or iOS simulators, and Apple signing assets are described in [Build PWA Wrapper Apps](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/build-pwa-wrapper-apps/).
2525

2626
## Install PWA Wrapper
2727

@@ -42,7 +42,7 @@ After installing the module, Mendix Studio Pro prompts you to enable the extensi
4242

4343
After installation, open the builder from the **Extensions** menu in Mendix Studio Pro by selecting **Open App Builder**.
4444

45-
{{< figure src="/attachments/refguide/mobile/pwa-wrapper/launch-app-builder-extension.png" alt="Open App Builder from the Extensions menu in Mendix Studio Pro" width="350" class="no-border" >}}
45+
{{< figure src="/attachments/refguide10/mobile/pwa-wrapper/launch-app-builder-extension.png" alt="Open App Builder from the Extensions menu in Mendix Studio Pro" width="350" class="no-border" >}}
4646

4747
## Use the Bundled JavaScript Actions
4848

@@ -52,5 +52,5 @@ Only request the permissions your app actually uses. This keeps the generated wr
5252

5353
## Read More
5454

55-
* [Build PWA Wrapper Apps](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/build-pwa-wrapper-apps/)
56-
* [PWA Wrapper Capabilities](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-capabilities/)
55+
* [Build PWA Wrapper Apps](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/build-pwa-wrapper-apps/)
56+
* [PWA Wrapper Capabilities](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-capabilities/)

content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-capabilities.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ PWA Wrapper includes bundled JavaScript actions that a Mendix PWA can call from
1111

1212
Support can vary by platform, operating system version, browser engine, and configured permissions. Always test the capabilities you depend on using the actual devices you plan to support.
1313

14-
In the current beta release, PWA Wrapper capabilities are documented for Android and iOS.
14+
PWA Wrapper capabilities are documented for Android and iOS.
1515

1616
## Supported Capabilities
1717

@@ -29,6 +29,7 @@ Verify the final packaged app on representative physical devices before release.
2929
| Upload videos from the camera or gallery | Lets the user capture a video or select an existing video for upload. | Yes | No |
3030
| Geolocation | Retrieves the device location for map, tracking, or location-aware flows. | Yes | Yes |
3131
| Local notification | Schedules or shows notifications generated by the app on the device. | No | Yes |
32+
| Push notification (remote) | Receives remote push notifications sent from a server via Firebase Cloud Messaging (FCM). | No | Yes |
3233
| Permissions | Checks or requests supported runtime permissions from the app flow. | No | Yes |
3334
| Biometric authentication | Checks biometric availability and prompts the user for biometric authentication. This depends on device hardware and biometric enrollment. | Yes | No |
3435

@@ -58,9 +59,14 @@ This mapping is guidance, not a fixed contract. Exact permission prompts can var
5859
| Upload videos from the camera or gallery | `Camera`, `Record Audio` | `Camera Usage`, `Microphone Usage` |
5960
| Geolocation | `Fine Location`, `Coarse Location` | `Location - When In Use Usage` |
6061
| Local notification | `Notifications` | No explicit builder permission message required |
62+
| Push notification (remote) | `Notifications` | No explicit builder permission message required |
6163

6264
When a capability relies on camera, location, or notifications, align the configured builder permissions with the JavaScript actions your app actually calls. For video capture flows, also verify whether the target platform requires microphone permission.
6365

66+
{{% alert color="info" %}}
67+
Push notifications require Firebase Cloud Messaging (FCM) integration through the Push Notifications Connector module. For detailed setup instructions for wrapped PWAs, see [PWA Wrapper: Push Notification Setup](/refguide10/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper/).
68+
{{% /alert %}}
69+
6470
## Designing with Capabilities
6571

6672
When you build a Mendix app with PWA Wrapper capabilities, follow these guidelines:
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
---
2+
title: "PWA Wrapper Deep Linking"
3+
url: /refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-deep-linking/
4+
weight: 40
5+
description: "How to implement deep linking in your PWA Wrapper app to enable inbound and outbound URL handling."
6+
aliases:
7+
- /refguide10/mobile/pwa-wrapper/pwa-wrapper-deep-linking/
8+
---
9+
10+
## Introduction
11+
12+
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:
13+
14+
* Outbound: your Mendix app opens a URL or deep link (for example, jumping to another app)
15+
* Inbound: the operating system launches your wrapped app via a registered deep link scheme, and the wrapper routes it into your app content
16+
17+
This guide covers both flows.
18+
19+
## Part 1: Outbound — Opening URLs and Deep Links
20+
21+
Use the **OpenDeepLink** JavaScript action to open external URLs or deep links from your nanoflows:
22+
23+
```
24+
OpenDeepLink(url: string): Promise<boolean>
25+
```
26+
27+
### Behavior
28+
29+
Behavior works as follows:
30+
31+
* **iOS and Android** — This returns `true` or `false` based on success, and catches errors and returns `false` on failure.
32+
33+
### Important Caveat
34+
35+
On both Android and iOS, the result of `OpenDeepLink` (true/false) indicates only that the call succeeded—not whether the target app could actually handle the link. Always test with the actual target apps you expect to open.
36+
37+
## Part 2: Inbound — Registering Deep Link Schemes and Hosts
38+
39+
Configure deep link schemes and hosts in the PWA Wrapper Builder during the app info step. The builder includes a **Deep Link editor** where you define which schemes and hosts your app should respond to.
40+
41+
### Adding a Deep Link Entry
42+
43+
Each deep link entry requires the following:
44+
45+
* **scheme** (required) — For example `myapp`, `pwa`, or `https`/`http` for universal/app links
46+
* **host** (required) — Domain or authority to match, for example `example.com`
47+
* **path** fields (optional, pick one at most):
48+
* **path** — Exact path to match (for example `/profile`)
49+
* **pathStartWith** — Path prefix to match (for example `/jump` catches `/jump/profile`)
50+
* **linkFeature** — Free-text label (metadata only, affects HarmonyOS builds)
51+
* **platform**`Android`, `iOS`, `HarmonyOS`, `all`, or unset (unset or `all` applies to every platform)
52+
53+
### Common Deep Link Patterns
54+
55+
Here is an example of a **Custom scheme** (works everywhere, no domain ownership needed):
56+
57+
* scheme: `myapp`
58+
* host: `example.com`
59+
* path fields: empty
60+
* Result: catches `myapp://example.com/...`
61+
62+
Here is an example of a **Universal Link / App Link scheme** (requires domain ownership):
63+
64+
* scheme: `https`
65+
* host: `yourapp.com`
66+
* pathStartWith: `/jump`
67+
* Result: catches `https://yourapp.com/jump/*` from any context that supports it
68+
69+
## Part 3: What the Builder Configures Per Platform
70+
71+
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.
72+
73+
## Part 4: Domain Verification Files (Manual Setup Required)
74+
75+
{{% alert color="warning" %}}
76+
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.
77+
78+
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.
79+
{{% /alert %}}
80+
81+
### Android: assetlinks.json
82+
83+
Create and host `https://yourdomain.com/.well-known/assetlinks.json` on your web server. The file must meet the following criteria:
84+
85+
* Have a valid JSON
86+
* Be served with `Content-Type: application/json`
87+
* Be accessible via `https` only (not `http`)
88+
89+
Here is an example structure:
90+
91+
```json
92+
[
93+
{
94+
"relation": ["delegate_permission/common.handle_all_urls"],
95+
"target": {
96+
"namespace": "android_app",
97+
"package_name": "com.yourcompany.yourapp",
98+
"sha256_cert_fingerprints": ["AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56:78"]
99+
}
100+
}
101+
]
102+
```
103+
104+
To find your app's SHA-256 fingerprint, use `jarsigner` or the Android Studio Build Variants panel after signing your APK.
105+
106+
### iOS: apple-app-site-association
107+
108+
Create and host `https://yourdomain.com/.well-known/apple-app-site-association` on your web server. The file must meet the following criteria:
109+
110+
* Have a valid JSON (no `.json` extension in the path)
111+
* Be served with `Content-Type: application/json`
112+
* Be accessible via `https` only (not `http`)
113+
114+
Here is an example structure:
115+
116+
```json
117+
{
118+
"applinks": {
119+
"apps": [],
120+
"details": [
121+
{
122+
"appID": "TEAM_ID.com.yourcompany.yourapp",
123+
"paths": ["/jump/*"]
124+
}
125+
]
126+
}
127+
}
128+
```
129+
130+
The `appID` format is `TEAM_ID.BUNDLE_ID`. The `paths` array should match the paths you configured in the PWA Wrapper Builder.
131+
132+
### Hosting the Files
133+
134+
The `.well-known` directory must be accessible at the root of your domain via `https`. The two typical approaches are:
135+
136+
* 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.
137+
* 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.
138+
139+
### Testing File Accessibility
140+
141+
Verify your files are correctly hosted:
142+
143+
```bash
144+
curl -I https://yourdomain.com/.well-known/assetlinks.json
145+
curl -I https://yourdomain.com/.well-known/apple-app-site-association
146+
```
147+
148+
Both should return HTTP 200 with `Content-Type: application/json`.
149+
150+
## Part 5: How Inbound Links Reach Your App Content
151+
152+
Once a deep link is caught by the wrapper, it is routed into your app's runtime. The exact process depends on the platform:
153+
154+
* Android: the wrapper loads the incoming deep link in the webview
155+
* iOS: The wrapper loads the incoming deep link in the webview
156+
157+
{{% alert color="info" %}}
158+
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.
159+
{{% /alert %}}
160+
161+
## Common Deep Linking Pitfalls
162+
163+
When employing deep linking, watch out for the following pitfalls:
164+
165+
* 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.
166+
* 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.
167+
* Misinterpreting the `OpenDeepLink` return value — The Boolean result only indicates the call succeeded, not whether the target app successfully opened or handled the link.
168+
* Mismatched path configuration — Ensure your `path` and `pathStartWith` values match the actual Mendix page URLs or `deep-link` microflow entry points your app exposes.
169+
170+
## Read More
171+
172+
* [PWA Wrapper](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/)
173+
* [PWA Wrapper Capabilities](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-capabilities/)
174+
* [Build PWA Wrapper Apps](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/build-pwa-wrapper-apps/)

0 commit comments

Comments
 (0)