Обзоры

Knuff - отладка Apple Push Notifications с Mac в один клик

Knuff - отладка Apple Push Notifications с Mac в один клик

Что это

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)

Пока нет комментариев.

Программы упомянутые в статье