Что это
Knuff - это бесплатное native macOS-приложение для отладки Apple Push Notification Service (APNs). Программа позволяет отправлять тестовые push-уведомления с вашего Mac прямо на iOS-устройства без необходимости настраивать backend-сервер. Самый популярный инструмент в этой нише - 5200+ звёзд на GitHub, активно развивается с 2014 года.
Для любого iOS-разработчика делающего приложение с push-уведомлениями знаком этот цикл: меняешь код, делаешь сборку, ждёшь backend, получаешь push, проверяешь как он выглядит на устройстве. Каждая итерация занимает минуты. Knuff сокращает это до секунд: написал JSON-payload, нажал Send, получил push на iPhone мгновенно.
Программа написана на чистом Objective-C, лицензия MIT, размер 4 Mb. Поддерживает оба способа авторизации в APNs: классический через .p12 сертификат и современный через .p8 auth key с JWT-токенами (рекомендуется Apple с 2016 года).
Важно: Knuff не отправляет уведомления массово на тысячи пользователей - это инструмент для отладки. Для production-нагрузки нужен полноценный backend (Node.js + apn library, Python + pyapns, или managed-сервисы Firebase / OneSignal).
Кому подойдёт
В первую очередь - iOS-разработчикам, которые добавляют push-уведомления в свои приложения. Чтобы проверить как уведомление выглядит на iPhone (текст, sound, badge, картинка в notification extension), нужно его отправить. Knuff позволяет это сделать без интеграции backend - очень удобно на этапе UI/UX-проектирования.
Во вторую - backend-инженерам, которые делают APNs-интеграцию на сервере. Прежде чем писать код отправки на Node.js или Python, можно проверить корректность сертификатов и структуру payload через Knuff. Если Knuff успешно отправляет, проблема не в Apple - значит ищите баги в своём коде.
В третью - QA-тестировщикам, которые проверяют как ваше приложение реагирует на push-уведомления в разных состояниях (foreground, background, killed app). Knuff позволяет отправлять одинаковые тестовые уведомления для воспроизведения багов.
В четвёртую - разработчикам notification service extensions (для модификации входящих push, например расшифровка end-to-end сообщений). Прежде чем писать extension-код, можно протестировать структуру payload через Knuff.
В пятую - студентам, изучающим iOS-разработку. Понимать как работает APNs - один из ключевых навыков. Knuff даёт песочницу для экспериментов: можно посмотреть как разные payload влияют на отображение уведомления.
Ключевые возможности
Подключение к APNs - sandbox и production
Apple предоставляет два окружения APNs: sandbox (api.sandbox.push.apple.com) для разработки и production (api.push.apple.com) для App Store-сборок. Knuff поддерживает оба - переключение через checkbox. Это критично потому что push для development-сборки не пройдёт через production-сервер и наоборот.
Авторизация .p12 сертификатом
Классический способ авторизации в APNs - через TLS-сертификат с приватным ключом, экспортированный из Apple Developer Portal в формате .p12. Knuff умеет загружать .p12 файлы (с паролем если был установлен) и использовать их для подключения. Проверка сертификата на актуальность и совместимость с выбранным окружением (sandbox/production).
Авторизация .p8 auth key + JWT (рекомендуется)
С 2016 года Apple ввела более простой способ - auth key. Один .p8 файл работает для всех приложений в team account, не истекает (в отличие от сертификатов которые истекают через год), не привязан к bundle ID. Knuff использует .p8 + key ID + team ID для генерации JWT-токенов, которые отправляются в каждом запросе.
JSON-payload редактор
Встроенный редактор с подсветкой синтаксиса JSON. Стандартный шаблон с aps.alert, sound, badge подставляется автоматически. Можно добавлять custom-поля для отладки своей логики (например "orderId": "12345" для тестирования deep link на конкретный заказ).
Push на конкретный device token
Device token - это уникальный идентификатор устройства для APNs. Получить его можно из вашего приложения через метод application:didRegisterForRemoteNotificationsWithDeviceToken:. В Knuff этот токен вставляется в поле Token и push отправляется именно на это устройство.
Выбор bundle ID
Для .p12 сертификатов Knuff показывает какой bundle ID связан с сертификатом. Для .p8 auth key - вы вводите bundle ID вручную. Без правильного bundle ID push не дойдёт до приложения (приложение не зарегистрируется на этот push).
Background и voIP уведомления
Knuff позволяет отправлять не только обычные alert-уведомления, но и:
- Background notifications (content-available: 1) - запускают приложение в фоне для обновления данных
- VoIP push - для приложений типа звонков (Telegram Calls, Discord, Zoom)
- Liveactivity push - для обновления Live Activity на iPhone
Лог истории
Все отправленные уведомления сохраняются в лог с timestamp и статусом доставки. Можно повторно отправить любой из истории.
Плюсы и минусы
Плюсы:
- Полностью бесплатное приложение, лицензия MIT.
- Самый популярный инструмент в нише - 5200+ звёзд на GitHub.
- Активная разработка с 2014 года.
- Native Objective-C - быстрое и лёгкое (4 Mb).
- Поддержка обоих способов авторизации (.p12 сертификат и .p8 auth key).
- Sandbox + production окружения.
- Установка через Homebrew Cask -
brew install --cask knuff. - Поддержка специальных типов push (background, voIP, Live Activity).
- JSON-payload редактор с подсветкой синтаксиса.
- История отправок.
Минусы:
- Только для отладки, не для production-нагрузки.
- Нет batch-отправки на список токенов.
- Не показывает почему push не был доставлен на устройство (только статус доставки на серверы Apple).
- Не поддерживает Firebase Cloud Messaging (FCM) - только нативный APNs.
- Не работает на Linux/Windows - только macOS.
- Требует Apple Developer Account для получения сертификатов или auth key.
- Не имеет CLI-режима для интеграции в CI/CD.
Как установить и использовать
Скачайте Knuff со страницы программы на mac-soft.ru. Самый простой способ - через Homebrew:
brew install --cask knuff
Или скачайте .zip с GitHub Releases, распакуйте, перетащите Knuff.app в Applications.
Подготовьте credentials. Два варианта:
Вариант 1: .p12 сертификат
1. Зайдите в Apple Developer Portal → Certificates, IDs & Profiles
2. Создайте Apple Push Notification service SSL Certificate для вашего bundle ID
3. Скачайте .cer файл, откройте в Keychain Access
4. Найдите его в Keychain, правый клик → Export → выберите .p12 формат, задайте пароль
5. Сохраните .p12 файл
Вариант 2: .p8 auth key (рекомендуется)
1. Apple Developer Portal → Keys → создайте новый Key с включённой APNs функцией
2. Скачайте .p8 файл (один раз, потом скачать нельзя)
3. Запишите Key ID и Team ID (показаны в Developer Portal)
Запустите Knuff. В верхней части окна выберите способ авторизации (Certificate или Token), загрузите .p12 или .p8 файл. Если используете .p8, введите Key ID и Team ID.
Дальше получите device token из вашего приложения. В Xcode-консоли при запуске приложения с разрешённым push выводится device token (32 символа hex). Скопируйте его и вставьте в поле Token в Knuff.
В JSON-редакторе Knuff введите payload, например:
{
"aps": {
"alert": {
"title": "Тест Knuff",
"body": "Привет от Knuff!"
},
"badge": 1,
"sound": "default"
}
}
Нажмите Push. Через секунду уведомление придёт на iPhone (если приложение в фоне, появится баннер; если запущено, callback userNotificationCenter:willPresentNotification: сработает).
Если push не пришёл - проверьте: 1) sandbox/production окружение совпадает со сборкой приложения, 2) bundle ID правильный, 3) device token актуален (он меняется при reinstall приложения), 4) приложение не отписано от push.
Альтернативы
Если Knuff не подходит - есть альтернативы:
- NWPusher - другая бесплатная Mac-утилита, аналог Knuff но менее популярная.
- Pusher (онлайн-сервис) - можно работать через браузер, не устанавливая ничего на Mac. Платный.
- apns-tool - CLI-альтернатива для интеграции в скрипты.
- Postman - можно настроить вручную для отправки в APNs HTTP/2 API. Сложнее настройка, но универсально.
- Apple Push Tester в Xcode (с iOS 16+ симулятор поддерживает push через .apns-файлы) - встроенная альтернатива но менее гибкая.
Knuff остаётся самым удобным для большинства случаев: native, бесплатный, мощный.
Итог
Knuff - стандартный инструмент iOS-разработчика, который должен быть в арсенале каждого кто работает с push-уведомлениями. Программа делает то что должна - надёжно отправляет тестовые push - и не требует ничего лишнего.
MIT-лицензия, 5200+ звёзд на GitHub, native Objective-C, размер 4 Mb на диске. Установка одной командой через Homebrew. Активная разработка с 2014 года показывает что инструмент проверен временем.
Если вы делаете iOS-приложение с push - устанавливайте без размышлений. Сэкономит десятки часов отладки за время разработки.
Скачать Knuff для macOS можно на mac-soft.ru. Программа бесплатная, лицензия MIT, без подписок.
Комментарии (0)