Android app
Notifly for Android is a native client that keeps a persistent WebSocket
connection to the server and puts every new message straight into the
notification shade within a fraction of a second. The server is hard-coded
(https://api.notifly.ru), so when signing in you enter only your email and
password — there is no server address field in the UI.
Besides receiving pushes, the app lets you answer questions right from the notification, stop escalation with one button, view monitors and heartbeats, search the history and open the built-in admin, where you can create channels and monitors without leaving the app.
Installation
Section titled “Installation”| What | Value |
|---|---|
| Download | notifly.ru/download/notifly.apk |
| Current version | in /download/version.json (the versionName field) — the same file the app checks for updates |
| Requirements | Android 8.0 or newer (API 26+) |
| Stores | Not on Google Play, RuStore or F-Droid — only the APK from the website |
applicationId | com.github.notifly |
How to install:
- Open the APK link on your phone and download the file.
- Open the downloaded file. Android will ask you to allow installs from this source (your browser or file manager) — allow it: the setting is usually called “Install unknown apps”.
- Confirm the installation and open the app.
Updates are checked by the app itself: at most once every 6 hours it checks
version.json on the website and, if a new version is out, shows a
notification with a link to the fresh APK. Android does not allow installing an
update silently — you confirm it, just like the first install.
Sign-in and registration
Section titled “Sign-in and registration”After installing, sign in with the same email and password as on app.notifly.ru. No account yet — tap Create account right on the login screen: after registration you will get an email with a confirmation link; follow it and sign in. Forgot password? opens the recovery page in the browser.
- Two-factor authentication. If 2FA is enabled on the account, the app asks for a code from the authenticator app or a recovery code.
- Device limit. If the account already has devices, the app offers to reconnect one of them (for example, after reinstalling) or to register as a new device. If the plan’s limit is reached, delete unused devices in the web admin (the Devices section).
Notifications
Section titled “Notifications”- Push to the notification shade over WebSocket. The app keeps a persistent connection in a background service and shows a notification as soon as a message lands in a channel — even when the app itself is closed. The one condition: Android must not put the service to sleep (see below). After a connection drop the app reconnects and fetches what was missed. Google Firebase (FCM) is not used for delivery.
- Each notification has its own target. Tapping opens exactly that message —
its channel, scrolled to the message and highlighted. If the message has
client::notification.click.url(see Message extras), that link is opened instead. Notifications are grouped by channel. - An image in the notification — from
client::notification.bigImageUrl.
Notification buttons
Section titled “Notification buttons”| Message | Buttons |
|---|---|
| Regular (or a question already answered/expired) | Mark read |
| Single-choice question with 1–3 options | option buttons (plus Mark read if there are fewer than three options) |
| Open question | Reply — type text right in the shade, and Mark read |
| Multi-select, form or more than three options | Reply — opens the app on this question, and Mark read |
Mark read marks the message as read on the server — this stops escalation (SMS, calls, emails, chats). After answering a question the app also marks the message as read. Actions run in the background and reach the server even on a poor connection: the app retries, and if it still fails, it reports that with a separate notification.
Alarm mode
Section titled “Alarm mode”For an important channel you can turn on alarm mode (the channel settings in the app): instead of a regular notification, a full-screen “alarm” opens, also over the lock screen — with a looping sound and vibration. The acknowledge button on this screen marks the message as read and thereby stops escalation. On Android 14+ the app asks for the full-screen notification permission.
Priorities
Section titled “Priorities”Every message has a priority from 0 to 10. It determines how prominent the notification is:
| Priority | Android notification importance |
|---|---|
0 | minimum: no sound, collapsed in the shade |
1–3 | low: no sound |
4–7 | default: with sound |
8–10 | high: with sound and a heads-up notification |
The priority is set when sending the message (see
Sending messages) or taken from the channel’s
defaultPriority. The app creates a separate Android notification channel for
each level — you can fine-tune sound and vibration in the system settings, and
pick a sound for each level in the app settings.
Quiet hours and maintenance windows
Section titled “Quiet hours and maintenance windows”- Quiet hours are configured right in the app (Settings → Quiet hours) — it is the same account setting as in the web admin. During quiet hours, messages below the priority threshold arrive without sound, vibration, heads-up or alarm mode, marked “Quiet hours”. The app keeps a copy of the settings and stays quiet even offline.
- Messages from channels in an active
maintenance window arrive silently, marked as
maintenance — the server flags them with the
notifly::deliveryfield.
Channel settings
Section titled “Channel settings”For each channel the app lets you:
- mute the channel on this device (the channel menu) — its notifications stop coming to this phone, while access to the channel and the feed remain; your other devices keep getting the messages as before;
- turn on alarm mode, pick the sound, vibration and notification importance.
Feed and screens
Section titled “Feed and screens”- Message feed with a channel filter (including subchannels). A message is deleted with a swipe — with undo; there are also “delete all” and “mark all as read”.
- Search. It first searches the already loaded messages, then the full history on the server, in the selected channel together with its subchannels.
- Questions (Ask) are interactive in the feed: option buttons, multi-select with checkboxes, a text field and forms with fields of different types. You can see whether a question was answered, cancelled or has expired.
- Browser check screenshots — if a browser monitor failed with a screenshot, the image is shown right in the feed.
- Monitors — a native screen with all monitor families: protocol, HTTP, content, ports, scenarios, browser and heartbeats. An “All / Problems / Paused” filter, pause and resume right from the list.
- Heartbeats of a channel — a list including subchannels and a detail screen: status, uptime for 24 h / 7 d / 30 d and a log of recent pings. Creating and editing is done in the web admin.
- Plan summary in the menu header: the plan, how many events were used today and how many devices are connected out of the limit.
- Built-in admin. Sections that are not native (channels, devices, API tokens, metrics, status pages, integrations, profile, pricing) open in a built-in WebView — it is the same web admin, no separate sign-in needed.
- Sending from the app. From the menu you can send a message or a question to your channel, and via the system “Share” — send text or a link from any app to a channel.
- Sign-in approval. If the “Notifly mobile” 2FA method is enabled on the account, signing in to the web admin makes the phone show a notification, and the Confirm sign-in screen asks for the two-digit code from the login screen (see Account security).
- Connection logs — help to understand why notifications do (not) arrive.
Offline
Section titled “Offline”The app keeps the latest messages (up to 500, 100 per channel) and the channel list in a local cache. The feed opens right away from the cache, and without a connection a “No connection · data from HH:MM” banner is shown. If the app starts without a network, it still opens and connects as soon as the network is back. The cache is cleared when you sign out.
Languages
Section titled “Languages”The interface is translated into 47 languages; you can pick the language in the app settings or keep the system one. Some new screens are available only in Russian and English so far.
Security
Section titled “Security”- The device token is stored encrypted with a key from the Android Keystore.
- Connections are HTTPS-only; backup of the app data is disabled.
- The device is visible and can be revoked in the web admin under Devices. When you sign out, the app deletes its device on the server.
Keeping notifications reliable
Section titled “Keeping notifications reliable”By default Android aggressively “puts to sleep” long-running apps to save battery. If the system unloads Notifly from memory, the WebSocket breaks and pushes stop arriving.
- Turn off battery optimization for Notifly. On first launch the app offers to do it itself; manually: Settings → “Battery optimization” → Notifly → do not optimize. Vendor-specific tips are at dontkillmyapp.com.
- The background connection notification. Notifly keeps a persistent connection-service notification with minimal importance. You can hide it in the app’s system notification settings — the connection itself is not affected.
After a phone reboot and an app update the connection service starts automatically.
Related pages
Section titled “Related pages”- Sending messages — how and with what priority to send pushes.
- Questions in channels (Ask) — questions you can answer from the shade.
- Delivery & escalation — what “Mark read” stops.
- Quiet hours and maintenance windows.
- iOS app — a client for iPhone and iPad (beta, built from source).