iOS application
Notifly for iOS is a native client for iPhone and iPad. Before relying on it, check its current status.
Status and alternatives
Section titled “Status and alternatives”If you need notifications on an iPhone while the app is closed, these options work today:
- Escalation — a message left unread for a set time is forwarded by Notifly to Telegram, email or a team chat (Slack, Discord, Teams, Mattermost); the iPhone shows those notifications through their own apps, independently of Notifly.
- A web dashboard tab on your computer — browser notifications while the tab is open.
- The Android app — a full client with a background connection, if you have an Android device at hand.
About the app
Section titled “About the app”The app is a native SwiftUI client, a twin of the Android app: the same screens, navigation drawer, labels and behavior. The message feed, monitors, heartbeats, sending messages and questions, quiet hours, settings and the login-approval screen are native. Sections that are easier to edit on the web (channels, devices, API tokens, metrics, status pages, integrations, profile, plans) open in the embedded web admin — the same one as on app.notifly.ru, with no second login.
The server is hardcoded (https://api.notifly.ru), so on login you only enter your
username and password — there is no server address field in the UI.
Features
Section titled “Features”- Message feed. “All messages” and a per-channel feed, the channel tree in the drawer, markdown, images and browser-check screenshots. Questions (Ask) are answered right in the feed: buttons, text, forms.
- Notifications with actions. Every new message produces a system notification. The Mark read button marks it read on the server (and stops escalation to SMS and calls); a question with options gets up to three buttons, one per option; an open question gets Reply with text input right in the notification; forms and multi-choice questions open the app.
- Back-fill of what you missed. On every connect the app fetches the messages that arrived
while the socket was down and shows them (at most 20 at a time). On the very first launch your
history is not replayed as notifications. Notifications stack per channel; a tap opens the URL
from
client::notification.click.url(see Extra message fields). - Alarm mode for an individual channel (channel settings in the feed): a full-screen alert with a looping sound, vibration and an Acknowledge button. It works while the app is active; in the background such a message arrives as a time-sensitive notification.
- Quiet hours and maintenance windows. The app reads the account’s quiet hours and during them shows messages below the urgency threshold silently; messages from a maintenance window are silent too.
- Monitors and heartbeats. A list of monitors of every family with statuses and pause, channel heartbeats with statuses and check history.
- Send a message or a question from the drawer to any of your channels.
- Offline cache. The latest channels and messages are stored on the device and visible without a connection.
- Login, registration and password recovery. Registration and recovery open as a sheet inside the app, without a detour to Safari.
- Two-factor authentication. On login the app asks for the code from your authenticator app or a recovery code. The reverse flow works too: when you sign in to the web admin with the “Notifly mobile” method, the phone shows a “Confirm login” screen where you type the two-digit code from the login page (manually — drawer → Confirm login). The same screen confirms connecting the phone to the “Notifly mobile” method.
- Token in the Keychain. The app’s client token is stored in the system Keychain, and the device itself is listed and revocable in the Devices section of the admin panel.
- External links open in Safari. Anything pointing outside
notifly.ruopens in the system browser.
How notifications arrive
Section titled “How notifications arrive”The connection lives while the app is on screen. When you background the app, iOS does not allow holding a WebSocket open, so the socket is closed; on return it reconnects and the missed messages are fetched and shown as notifications. Background delivery over APNs is the next piece of work.
The practical takeaway: today the iOS app is a handy “Notifly in your pocket” — the feed, monitors, answering questions and login approval while you’re using the phone. If you need to be woken up at 3 a.m., set up escalation to a phone call/SMS or use the Android client — neither depends on the app being open.
Message priorities
Section titled “Message priorities”A message priority (0–10) is set when sending or taken from the channel’s defaultPriority.
On iOS it maps to the notification’s interruption level:
| Priority | Behavior on the iPhone |
|---|---|
0–1 | Quiet: no sound, Notification Center only |
2–3 | Ordinary banner, no sound |
4–7 | Ordinary banner with sound |
8–10 | Time-sensitive: banner with sound |
While the app is open, ordinary messages are not duplicated as banners — you already see them in
the app’s feed, so the notification goes straight to Notification Center (with sound if the
priority is 4 or higher). Priority 8–10 still shows a banner on top of the running app.
Notifications with priority 8–10 are marked time-sensitive, but the app does not yet have Apple’s
separate entitlement to break through Focus modes — do not count on them getting through Focus.
Installation
Section titled “Installation”There is no App Store build yet — the app is built from the repository sources (the ios/
directory). You need macOS, Xcode 15+ and XcodeGen:
the .xcodeproj is not committed, it is generated from project.yml.
brew install xcodegencd iosxcodegen generate # → Notifly.xcodeprojopen Notifly.xcodeprojIn Xcode set your signing team (DEVELOPMENT_TEAM), pick the Notifly scheme and run it on a
simulator or on your own iPhone. Build details, the scheme for a local backend and the debugging
order are in ios/README.md.
Requirements and build parameters:
| Parameter | Value |
|---|---|
| Minimum iOS | 16.0 |
| Devices | iPhone and iPad |
| Bundle identifier | ru.notifly.app |
| Server | https://api.notifly.ru (fixed) |
First login
Section titled “First login”Open the app and sign in with the same username and password you use on app.notifly.ru. Allow notifications when the system asks. If the account has reached its connected-device limit, the server disconnects the oldest device by itself — you don’t need to free a slot manually. With 2FA enabled you’ll be asked for the code from your authenticator app or a recovery code.
Related pages
Section titled “Related pages”- Android application — the native client with background delivery.
- Sending messages — how and with what priority to send a push.
- Extra message fields —
client::notificationand tap-through links. - Delivery & escalation — what to do when a notification must not be missed.
- First login — creating an account, channels and tokens.