iOS-приложение
Notifly для iOS — нативный клиент для iPhone и iPad. Прежде чем на него рассчитывать, посмотрите на его текущий статус.
Статус и альтернативы
Заголовок раздела «Статус и альтернативы»Если нужно получать уведомления на iPhone, когда приложение закрыто, сейчас работают такие варианты:
- Эскалация — непрочитанное за заданное время сообщение Notifly дошлёт в Telegram, на почту или в рабочий чат (Slack, Discord, Teams, Mattermost) — эти уведомления iPhone показывает через их собственные приложения, независимо от Notifly.
- Вкладка веб-админки на компьютере — уведомления браузера, пока вкладка открыта.
- Android-приложение — полноценный клиент с фоновым соединением, если под рукой есть Android-устройство.
О приложении
Заголовок раздела «О приложении»Приложение — нативный SwiftUI-клиент, двойник Android-приложения: те же экраны, боковое меню, подписи и поведение. Нативными сделаны лента сообщений, мониторы, heartbeat, отправка сообщений и вопросов, тихие часы, настройки и экран подтверждения входа. Разделы, которые удобнее править в вебе (каналы, устройства, API-токены, метрики, статус-страницы, интеграции, профиль, тарифы), открываются встроенной веб-админкой — той же, что на app.notifly.ru, без повторного входа.
Сервер зашит (https://api.notifly.ru), поэтому при входе вы вводите только логин
и пароль — поля адреса сервера в UI нет.
Что умеет приложение
Заголовок раздела «Что умеет приложение»- Лента сообщений. «Все сообщения» и лента отдельного канала, дерево каналов в боковом меню, markdown, картинки и скриншоты браузерных проверок. Вопросы (Ask) отвечаются прямо в ленте: кнопки, текст, формы.
- Уведомления с действиями. На каждое новое сообщение — системное уведомление. Кнопка «Прочитано» отмечает сообщение прочитанным на сервере (и останавливает эскалацию на SMS и звонок); у вопроса с вариантами до трёх кнопок — по одной на вариант, у открытого вопроса — «Ответить» с вводом текста прямо в уведомлении; формы и мультивыбор открывают приложение.
- Догрузка пропущенного. При каждом подключении приложение добирает сообщения,
пришедшие без сокета, и показывает их (не более 20 за раз). На первом запуске история
в уведомления не дублируется. Уведомления складываются в стопку по каналу; тап
открывает ссылку из
client::notification.click.url(см. Доп. поля). - Режим будильника для отдельного канала (настройки канала в ленте): полноэкранный экран с повторяющимся звуком и вибрацией и кнопкой «Ознакомлен». Работает, пока приложение активно; в фоне такое сообщение приходит как «важное» уведомление.
- Тихие часы и окна обслуживания. Приложение читает тихие часы аккаунта и в эти часы показывает сообщения ниже порога срочности беззвучно; сообщения из окна обслуживания тоже приходят без звука.
- Мониторы и heartbeat. Список мониторов всех семейств со статусами и паузой, heartbeat каналов со статусами и историей проверок.
- Отправка сообщения или вопроса из меню — в любой свой канал.
- Офлайн-кэш. Последние каналы и сообщения сохраняются на устройстве и видны без связи.
- Вход, регистрация и восстановление пароля. Регистрация и восстановление открываются листом внутри приложения, без ухода в Safari.
- Двухфакторная аутентификация. При входе приложение спрашивает код из authenticator-приложения или recovery-код. Обратный сценарий тоже работает: когда вы входите в веб-админку с методом «Notifly mobile», телефон показывает экран «Подтвердите вход», куда вводится двузначный код с экрана входа (вручную — меню → Подтвердить вход). Тем же экраном подтверждается подключение телефона к методу «Notifly mobile».
- Токен в Keychain. Токен устройства хранится в системном Keychain, а само устройство видно и отзывается в разделе Устройства админки.
- Внешние ссылки — в Safari. Всё, что ведёт за пределы
notifly.ru, открывается в системном браузере.
Как приходят уведомления
Заголовок раздела «Как приходят уведомления»Соединение живёт, пока приложение на экране. Когда вы сворачиваете приложение, iOS не даёт держать WebSocket в фоне, и сокет закрывается; при возврате он поднимается заново, и пропущенные сообщения догружаются и показываются уведомлениями. Фоновая доставка через APNs — следующий этап работ.
Практический вывод: iOS-приложение сейчас удобно как «Notifly в кармане» — лента, мониторы, ответы на вопросы и подтверждение входа во время работы с телефоном. Если нужен звонок посреди ночи, настраивайте эскалацию на телефон/SMS или Android-клиент — они от состояния приложения не зависят.
Приоритеты сообщений
Заголовок раздела «Приоритеты сообщений»Приоритет сообщения (0–10) задаётся при отправке или берётся из defaultPriority
канала. На iOS он превращается в уровень прерывания уведомления:
| Приоритет | Поведение на iPhone |
|---|---|
0–1 | Тихо: без звука, только в Центре уведомлений |
2–3 | Обычный баннер, без звука |
4–7 | Обычный баннер со звуком |
8–10 | «Важное» (time-sensitive): баннер со звуком |
Пока приложение открыто, обычные сообщения баннером не дублируются — они и так видны
в ленте приложения, поэтому уведомление уходит сразу в Центр уведомлений (со звуком, если
приоритет 4 и выше). Приоритет 8–10 показывает баннер и поверх открытого приложения.
Уведомления с приоритетом 8–10 помечаются как time-sensitive, но отдельного
разрешения Apple на пробитие режима «Фокус» у приложения пока нет — рассчитывать на
то, что они пройдут сквозь «Фокус», не стоит.
Установка
Заголовок раздела «Установка»Готовой сборки в App Store пока нет — приложение собирается из исходников репозитория
(каталог ios/). Нужны macOS, Xcode 15+ и XcodeGen:
.xcodeproj в репозитории не хранится, он генерируется из project.yml.
brew install xcodegencd iosxcodegen generate # → Notifly.xcodeprojopen Notifly.xcodeprojВ Xcode укажите свою команду подписи (DEVELOPMENT_TEAM), выберите схему Notifly
и запустите на симуляторе или на своём iPhone. Подробности сборки, схема для локального
стенда и порядок отладки — в ios/README.md.
Требования и параметры сборки:
| Параметр | Значение |
|---|---|
| Минимальная iOS | 16.0 |
| Устройства | iPhone и iPad |
| Bundle identifier | ru.notifly.app |
| Сервер | https://api.notifly.ru (зашит) |
Первый вход
Заголовок раздела «Первый вход»Откройте приложение и войдите тем же логином и паролем, что и на app.notifly.ru. Разрешите уведомления по системному запросу. Если у аккаунта исчерпан лимит подключённых устройств, сервер сам отключит самое старое устройство — освобождать место вручную не нужно. Включённая 2FA попросит код из authenticator-приложения или recovery-код.
Связанные страницы
Заголовок раздела «Связанные страницы»- Android-приложение — нативный клиент с фоновой доставкой.
- Отправка сообщений — как и с каким приоритетом слать push.
- Доп. поля сообщений —
client::notificationи переход по тапу. - Доставка и эскалация — что делать, если уведомление не должно быть пропущено.
- Первый вход — создание аккаунта, каналов и токенов.