Skip to content

Commit 2138998

Browse files
Document appstore QR links
1 parent 54145d6 commit 2138998

3 files changed

Lines changed: 29 additions & 4 deletions

File tree

docs/apps/appstore.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,27 @@ The AppStore app can pull apps from more than one source:
1010

1111
Use the backend selector in the AppStore UI to switch between sources.
1212

13+
## Scan QR
14+
15+
The AppStore has a **Scan QR** button (QR icon, top-right) that opens an app's
16+
detail page directly from a scanned app link. It uses the Camera app in QR-scan
17+
mode — no typing needed.
18+
19+
Supported app-link formats (case-insensitive):
20+
21+
- `https://badgehub.eu/page/project/APP_ID`
22+
- `micropythonos://app/APP_ID`
23+
- `mpos://app/APP_ID`
24+
25+
All three forms are equivalent: the link carries only the app's identity, and
26+
the AppStore resolves it against its trusted catalog. If the app list hasn't
27+
loaded yet, the AppStore downloads it first, then opens the detail page.
28+
29+
If the code is not an app link, the AppStore offers it to installed apps that
30+
registered a matching URL handler, or shows a `Not an app link` message. If the
31+
linked app can't be found, it shows `App not found`; if the app list can't be
32+
downloaded, `No connection`.
33+
1334
## Example Apps
1435

1536
- **Hello World**: A sample app demonstrating basic functionality.

docs/apps/badgehub.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ Releases on BadgeHub should use [semantic versioning](https://semver.org/) strin
5050

5151
The AppStore app can switch between the curated MicroPythonOS backend and the BadgeHub backend. On supported firmware builds, BadgeHub is the default backend. Tap the backend selector in the AppStore UI to switch sources.
5252

53+
## Sharing via QR
54+
55+
To share your project on-device, point users at `https://badgehub.eu/page/project/<slug>` and have them tap **Scan QR** in the AppStore. See [App Store](appstore.md#scan-qr).
56+
5357
## See also
5458

5559
- [Bundling Apps](bundling-apps.md) — creating `.mpk` packages

docs/architecture/intents.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -825,19 +825,19 @@ MicroPythonOS supports opening URLs (e.g., from QR codes) through a deep-link me
825825
QR codes can point directly to an app in the App Store using these link formats:
826826

827827
```
828-
https://apps.micropythonos.com/app/<app_id>[?v=<min_version>&s=<source>]
828+
https://badgehub.eu/page/project/<app_id>[?v=<min_version>&s=<source>]
829829
microPythonOS://app/<app_id>[?...]
830830
mpos://app/<app_id>[?...]
831831
```
832832

833-
All three forms are equivalent and case-insensitive (`MPOS://APP/COM.EXAMPLE.PAINT` works too). The link only carries the app's identity — never a download URL — so the App Store resolves it against its trusted catalog.
833+
All three forms are equivalent and case-insensitive (`MPOS://APP/COM.EXAMPLE.PAINT` works too). The link only carries the app's identity — never a download URL — so the App Store resolves it against its trusted catalog. The user-facing flow (the AppStore's **Scan QR** button) is described in [App Store](../apps/appstore.md#scan-qr).
834834

835835
Opening a store link launches the App Store on the linked app's detail page:
836836

837837
```python
838838
from mpos.content.deeplink import open_url
839839

840-
open_url("https://apps.micropythonos.com/app/com.example.myapp")
840+
open_url("https://badgehub.eu/page/project/com.example.myapp")
841841
```
842842

843843
### Third-Party URL Handlers
@@ -862,7 +862,7 @@ Rules for `urlPattern`:
862862

863863
- Must look like `scheme://host/...` with a literal host (no wildcards in host).
864864
- A trailing `*` is the only wildcard allowed and matches any suffix.
865-
- Patterns matching the official store host (`apps.micropythonos.com`) or the `mpos://` / `microPythonOS://` schemes are reserved for the system and rejected at registration.
865+
- Patterns matching the official store host (`badgehub.eu`) or the `mpos://` / `microPythonOS://` schemes are reserved for the system and rejected at registration.
866866
- Matching is a case-insensitive scheme-and-host prefix match.
867867

868868
When a URL is opened, the system checks for matching third-party handlers. One match dispatches directly; several open the chooser. No sticky default is set, so a later-installed app is never permanently shadowed.

0 commit comments

Comments
 (0)