Skip to content

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.

WhatValue
Downloadnotifly.ru/download/notifly.apk
Current versionin /download/version.json (the versionName field) — the same file the app checks for updates
RequirementsAndroid 8.0 or newer (API 26+)
StoresNot on Google Play, RuStore or F-Droid — only the APK from the website
applicationIdcom.github.notifly

How to install:

  1. Open the APK link on your phone and download the file.
  2. 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”.
  3. 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.

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).
  • 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.
MessageButtons
Regular (or a question already answered/expired)Mark read
Single-choice question with 1–3 optionsoption buttons (plus Mark read if there are fewer than three options)
Open questionReply — type text right in the shade, and Mark read
Multi-select, form or more than three optionsReply — 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.

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.

Every message has a priority from 0 to 10. It determines how prominent the notification is:

PriorityAndroid notification importance
0minimum: no sound, collapsed in the shade
1–3low: no sound
4–7default: with sound
8–10high: 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 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::delivery field.

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.
  • 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.

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.

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.

  • 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.

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.