2022-01-24 17:36:38 -08:00
|
|
|
# Meshtastic Apple Clients
|
2021-11-29 15:57:24 -08:00
|
|
|
|
2022-05-12 21:22:10 +10:00
|
|
|
## Overview
|
|
|
|
|
|
2024-02-03 21:28:36 +00:00
|
|
|
SwiftUI client applications for iOS, iPadOS and macOS.
|
2022-05-12 21:22:10 +10:00
|
|
|
|
2024-06-07 22:09:20 -05:00
|
|
|
## Getting Started
|
2021-12-25 23:52:20 -08:00
|
|
|
|
2024-12-03 17:23:31 -08:00
|
|
|
This project always uses the latest release version of XCode.
|
2021-12-25 23:52:20 -08:00
|
|
|
|
2024-06-07 22:09:20 -05:00
|
|
|
1. Clone the repo.
|
2025-03-22 13:16:37 -04:00
|
|
|
```sh
|
|
|
|
|
git clone git@github.com:meshtastic/Meshtastic-Apple.git
|
|
|
|
|
```
|
|
|
|
|
2. Open the local directory.
|
|
|
|
|
```sh
|
|
|
|
|
cd Meshtastic-Apple
|
|
|
|
|
```
|
|
|
|
|
3. Set up git hooks to automatically lint the project when you commit changes.
|
|
|
|
|
```sh
|
|
|
|
|
./scripts/setup-hooks.sh
|
|
|
|
|
```
|
|
|
|
|
4. Open `Meshtastic.xcworkspace`
|
|
|
|
|
```sh
|
|
|
|
|
open Meshtastic.xcworkspace
|
|
|
|
|
```
|
|
|
|
|
5. Build and run the `Meshtastic` target.
|
2021-11-29 21:11:27 -08:00
|
|
|
|
2024-06-07 22:09:20 -05:00
|
|
|
## Technical Standards
|
2021-11-29 21:11:27 -08:00
|
|
|
|
2024-06-07 22:09:20 -05:00
|
|
|
### Supported Operating Systems
|
|
|
|
|
|
2024-10-20 08:49:58 -07:00
|
|
|
The last two major operating system versions are supported on iOS, iPadOS and macOS.
|
2024-06-07 22:09:20 -05:00
|
|
|
|
|
|
|
|
### Code Standards
|
|
|
|
|
|
|
|
|
|
- Use SwiftUI
|
|
|
|
|
- Use SFSymbols for icons
|
|
|
|
|
- Use Core Data for persistence
|
|
|
|
|
|
|
|
|
|
## Updating Protobufs:
|
2024-06-29 15:21:42 -05:00
|
|
|
|
|
|
|
|
1. run
|
|
|
|
|
```bash
|
|
|
|
|
./scripts/gen_protos.sh
|
|
|
|
|
```
|
|
|
|
|
2. Build, test, and commit the changes.
|
|
|
|
|
|
2026-04-05 21:38:10 -07:00
|
|
|
## Deep Links
|
|
|
|
|
|
|
|
|
|
The app supports deep links using the `meshtastic:///` URL scheme, for use with shortcuts, intents, and web pages.
|
|
|
|
|
|
|
|
|
|
### Messages
|
|
|
|
|
|
|
|
|
|
| URL | Description |
|
|
|
|
|
|-----|-------------|
|
|
|
|
|
| `meshtastic:///messages` | Messages tab |
|
|
|
|
|
| `meshtastic:///messages?channelId={channelId}&messageId={messageId}` | Channel messages (`messageId` is optional) |
|
|
|
|
|
| `meshtastic:///messages?userNum={userNum}&messageId={messageId}` | Direct messages (`messageId` is optional) |
|
|
|
|
|
|
|
|
|
|
### Connect
|
|
|
|
|
|
|
|
|
|
| URL | Description |
|
|
|
|
|
|-----|-------------|
|
|
|
|
|
| `meshtastic:///connect` | Connect tab |
|
|
|
|
|
|
|
|
|
|
### Nodes
|
|
|
|
|
|
|
|
|
|
| URL | Description |
|
|
|
|
|
|-----|-------------|
|
|
|
|
|
| `meshtastic:///nodes` | Nodes tab |
|
|
|
|
|
| `meshtastic:///nodes?nodenum={nodenum}` | Selected node |
|
|
|
|
|
|
|
|
|
|
### Mesh Map
|
|
|
|
|
|
|
|
|
|
| URL | Description |
|
|
|
|
|
|-----|-------------|
|
|
|
|
|
| `meshtastic:///map` | Map tab |
|
|
|
|
|
| `meshtastic:///map?nodenum={nodenum}` | Node on map |
|
|
|
|
|
| `meshtastic:///map?waypointId={waypointId}` | Waypoint on map |
|
|
|
|
|
|
|
|
|
|
### Settings
|
|
|
|
|
|
|
|
|
|
Each settings item has an associated deep link. No parameters are supported for settings URLs.
|
|
|
|
|
|
|
|
|
|
| URL | Description |
|
|
|
|
|
|-----|-------------|
|
|
|
|
|
| `meshtastic:///settings/about` | About Meshtastic |
|
|
|
|
|
| `meshtastic:///settings/appSettings` | App Settings |
|
|
|
|
|
| `meshtastic:///settings/routes` | Routes |
|
|
|
|
|
| `meshtastic:///settings/routeRecorder` | Route Recorder |
|
|
|
|
|
| **Radio Config** | |
|
|
|
|
|
| `meshtastic:///settings/lora` | LoRa Config |
|
|
|
|
|
| `meshtastic:///settings/channels` | Channels |
|
|
|
|
|
| `meshtastic:///settings/security` | Security Config |
|
|
|
|
|
| `meshtastic:///settings/shareQRCode` | Share QR Code |
|
|
|
|
|
| **Device Config** | |
|
|
|
|
|
| `meshtastic:///settings/user` | User Config |
|
|
|
|
|
| `meshtastic:///settings/bluetooth` | Bluetooth Config |
|
|
|
|
|
| `meshtastic:///settings/device` | Device Config |
|
|
|
|
|
| `meshtastic:///settings/display` | Display Config |
|
|
|
|
|
| `meshtastic:///settings/network` | Network Config |
|
|
|
|
|
| `meshtastic:///settings/position` | Position Config |
|
|
|
|
|
| `meshtastic:///settings/power` | Power Config |
|
|
|
|
|
| **Module Config** | |
|
|
|
|
|
| `meshtastic:///settings/ambientLighting` | Ambient Lighting |
|
|
|
|
|
| `meshtastic:///settings/cannedMessages` | Canned Messages |
|
|
|
|
|
| `meshtastic:///settings/detectionSensor` | Detection Sensor |
|
|
|
|
|
| `meshtastic:///settings/externalNotification` | External Notification |
|
|
|
|
|
| `meshtastic:///settings/mqtt` | MQTT |
|
|
|
|
|
| `meshtastic:///settings/paxCounter` | Pax Counter |
|
|
|
|
|
| `meshtastic:///settings/rangeTest` | Range Test |
|
|
|
|
|
| `meshtastic:///settings/ringtone` | Ringtone |
|
|
|
|
|
| `meshtastic:///settings/serial` | Serial |
|
|
|
|
|
| `meshtastic:///settings/storeAndForward` | Store & Forward |
|
|
|
|
|
| `meshtastic:///settings/telemetry` | Telemetry |
|
|
|
|
|
| **TAK** | |
|
|
|
|
|
| `meshtastic:///settings/tak` | TAK Config |
|
|
|
|
|
| **Logging** | |
|
|
|
|
|
| `meshtastic:///settings/debugLogs` | Debug Logs |
|
|
|
|
|
| **Developers** | |
|
|
|
|
|
| `meshtastic:///settings/appFiles` | App Files |
|
|
|
|
|
| `meshtastic:///settings/firmwareUpdates` | Firmware Updates |
|
|
|
|
|
|
2026-04-17 21:58:13 -07:00
|
|
|
## CarPlay
|
|
|
|
|
|
|
|
|
|
The app supports CarPlay for hands-free mesh messaging while driving. The CarPlay interface shows connection status, favorite contacts, and channels.
|
|
|
|
|
|
|
|
|
|
### Siri Voice Commands
|
|
|
|
|
|
|
|
|
|
Use these Siri voice commands on CarPlay to interact with Meshtastic:
|
|
|
|
|
|
|
|
|
|
| Intent | Example Phrase |
|
|
|
|
|
| --- | --- |
|
|
|
|
|
| `INSendMessageIntent` | "Send a message on Meshtastic" |
|
|
|
|
|
| `INSearchForMessagesIntent` | "Search Meshtastic messages" |
|
|
|
|
|
| `INSetMessageAttributeIntent` | "Mark Meshtastic message as read" |
|
|
|
|
|
|
|
|
|
|
### Features
|
|
|
|
|
|
|
|
|
|
- **Connection Status** — Shows whether a Meshtastic device is connected and the device name
|
|
|
|
|
- **Favorite Contacts** — Lists nodes marked as favorites with unread message counts; tap to view contact detail with a native Siri compose button
|
|
|
|
|
- **Channels** — Lists configured channels with unread counts; tap to start a channel message via Siri
|
|
|
|
|
- **Incoming Message Notifications** — Siri announces incoming Meshtastic messages when Announce Notifications is enabled
|
|
|
|
|
- **Conversation History** — Sent and received messages appear in CarPlay Messages for quick access
|
|
|
|
|
|
2026-04-18 22:29:25 +00:00
|
|
|
|
2024-06-29 15:21:42 -05:00
|
|
|
## Release Process
|
|
|
|
|
|
|
|
|
|
For more information on how a new release of Meshtastic is managed, please refer to [RELEASING.md](./RELEASING.md)
|
2024-06-07 22:09:20 -05:00
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
This project is licensed under the GPL v3. See the [LICENSE](LICENSE) file for details.
|