Перейти к содержанию

Пользовательское push-уведомление в активном режиме для iOS

Начиная с версии 6.10.0, вы можете интегрировать модуль PushwooshForegroundPush для настройки push-уведомлений в активном режиме, когда нативные системные оповещения iOS отключены.

1. Отключите нативные оповещения для push-уведомлений в активном режиме

Anchor link to

Добавьте Pushwoosh_SHOW_ALERT = false в ваш Info.plist.

<key>Pushwoosh_SHOW_ALERT</key>
<false/>

2. Интеграция модуля PushwooshForegroundPush

Anchor link to

Swift Package Manager

Cocoapods

Terminal window
# Uncomment the next line to define a global platform for your project
# platform :ios, '13.0'
target 'MyApp' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
pod 'PushwooshXCFramework'
pod 'PushwooshFramework/PushwooshForegroundPush'
end

3. Добавьте конфигурацию PushwooshForegroundPush в AppDelegate

Anchor link to
import UIKit
import PushwooshFramework
import PushwooshForegroundPush
@main
class AppDelegate: UIResponder, UIApplicationDelegate, PWMessagingDelegate, PWForegroundPushDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Pushwoosh.ForegroundPush.foregroundNotificationWith(style: .style1,
duration: 5,
vibration: .notification,
disappearedPushAnimation: .balls)
Pushwoosh.ForegroundPush.delegate = self
return true
}
func pushwoosh(_ pushwoosh: Pushwoosh, onMessageReceived message: PWMessage) {
if let payload = message.payload {
// Pushwoosh method
Pushwoosh.ForegroundPush.showForegroundPush(userInfo: payload)
}
}
}

Использование метода foregroundNotificationWith

Метод foregroundNotificationWith позволяет отображать пользовательское push-уведомление в активном режиме с настраиваемым стилем, продолжительностью и тактильной обратной связью.

Сигнатура метода (Swift / Objective-C):

@objc
static func foregroundNotificationWith(
style: PWForegroundPushStyle,
duration: Int,
vibration: PWForegroundPushHapticFeedback,
disappearedPushAnimation: PWForegroundPushDisappearedAnimation
)

Параметры:

  1. style (PWForegroundPushStyle)
  • В настоящее время доступен только style1.
  1. duration (Int)
  • Указывает, как долго уведомление будет отображаться перед исчезновением (в секундах).
  1. vibration (PWForegroundPushHapticFeedback)
  • Управляет тактильной обратной связью при показе уведомления. Доступные опции:
case none // Без вибрации
case light // Легкая вибрация
case medium // Средняя вибрация
case heavy // Сильная вибрация
case soft // Мягкая вибрация
case rigid // Резкая вибрация
case notification // Стандартная вибрация уведомления
  1. disappearedPushAnimation (PWForegroundPushDisappearedAnimation)
  • Анимация исчезновения push-уведомления
case balls = 0
case regularPush

4. Реализация метода делегата didTapForegroundPush

Anchor link to

Для обработки нажатий пользователя на пользовательские push-уведомления в активном режиме реализуйте метод протокола PWForegroundPushDelegate:

// Обработка нажатия на push-уведомление в активном режиме
func didTapForegroundPush(_ userInfo: [AnyHashable : Any]) {
print("Foreground custom push: \(userInfo)")
// Выполните любое действие, например, переход на определенный экран
// navigateToScreen(for: userInfo)
}

Примечания:

  • Этот метод вызывается, когда пользователь нажимает на пользовательское push-уведомление в активном режиме.
  • userInfo содержит полезную нагрузку уведомления.
  • Убедитесь, что вы установили Pushwoosh.ForegroundPush.delegate = self после конфигурации.

5. Необязательные параметры для настройки push-уведомлений в активном режиме

Anchor link to

Модуль PushwooshForegroundPush предоставляет несколько необязательных параметров для настройки внешнего вида и поведения ваших push-уведомлений в активном режиме. Их можно установить глобально через статические свойства.

СвойствоТипОписаниеПо умолчанию
useLiquidViewBoolИспользовать вид Liquid Glass на iOS 26.false
gradientColors[UIColor]?Необязательный массив цветов для градиентного фона.nil
backgroundColorUIColor?Цвет фона для push-уведомления. Если nil и gradientColors не установлен, используется градиент по умолчанию.Системный градиент по умолчанию
usePushAnimationBoolАнимировать ли push-уведомление при показе.true
titlePushColorUIColor?Цвет текста заголовка уведомления. По умолчанию системный белый, если nil.white
messagePushColorUIColor?Цвет текста сообщения уведомления. По умолчанию системный белый, если nil.white
titlePushFontUIFont?Шрифт текста заголовка уведомления. По умолчанию системный шрифт, если nil.Системный шрифт по умолчанию
messagePushFontUIFont?Шрифт текста сообщения уведомления. По умолчанию системный шрифт, если nil.Системный шрифт по умолчанию

Итог:

  • Swift 5.13+ + iOS 26 → Liquid Glass
  • Swift 5.13+ + iOS < 26 → Стандартный UIView
  • Swift < 5.13 → Всегда размытый вид (нет поддержки Liquid Glass)

Пример использования:

Pushwoosh.ForegroundPush.useLiquidView = true
Pushwoosh.ForegroundPush.gradientColors = [.red, .orange, .yellow]
Pushwoosh.ForegroundPush.titlePushColor = .red
Pushwoosh.ForegroundPush.messagePushColor = .green
Pushwoosh.ForegroundPush.backgroundColor = .black
Pushwoosh.ForegroundPush.titlePushFont = .boldSystemFont(ofSize: 22)
Pushwoosh.ForegroundPush.messagePushFont = .italicSystemFont(ofSize: 15)
Pushwoosh.ForegroundPush.usePushAnimation = false

6. Пример push-уведомления в активном режиме

Anchor link to

Этот пример демонстрирует, как отобразить пользовательское push-уведомление в активном режиме с заголовком, сообщением, карточками и GIF-анимацией.

Push-уведомление Pushwoosh в активном режиме с анимированным Liquid Glass
Push-уведомление Pushwoosh в активном режиме с gif-вложением
Push-уведомление Pushwoosh в активном режиме с изображением-карточкой
Push-уведомление Pushwoosh в активном режиме с пользовательским градиентом и цветами заголовка и сообщения
Push-уведомление Pushwoosh в активном режиме с пользовательским фоном, шрифтами заголовка и сообщения и без анимации

Вот и все. Вы успешно настроили пользовательские push-уведомления в активном режиме для iOS с помощью Pushwoosh.