Часто задаваемые вопросы по iOS SDK
FAQ по интеграции с iOS
Anchor link toВ: Как установить Pushwoosh SDK в мой iOS-проект?
Anchor link toО: Вы можете интегрировать Pushwoosh SDK с помощью Swift Package Manager или CocoaPods.
В: Как установить Pushwoosh SDK с помощью Swift Package Manager?
Anchor link toО: В Xcode перейдите в раздел Package Dependencies и добавьте пакет, используя следующий URL: https://github.com/Pushwoosh/Pushwoosh-XCFramework
.
В: Как установить Pushwoosh SDK с помощью CocoaPods?
Anchor link toО: Откройте Podfile
вашего проекта и добавьте строку pod 'PushwooshXCFramework'
. Затем выполните команду pod install
в терминале.
В: Какие возможности (capabilities) нужно добавить в проект, чтобы включить Push-уведомления?
Anchor link toО: В разделе Signing & Capabilities настроек вашего проекта необходимо добавить возможности Push Notifications
и Background Modes
. При добавлении Background Modes
убедитесь, что вы отметили флажком Remote notifications
.
В: Какая дополнительная возможность требуется для уведомлений, чувствительных ко времени (Time Sensitive Notifications)?
Anchor link toО: Если вы планируете использовать уведомления, чувствительные ко времени (Time Sensitive Notifications, iOS 15+), вам также необходимо добавить возможность Time Sensitive Notifications
.
В: Куда нужно добавить код инициализации Pushwoosh?
Anchor link toО: Код инициализации необходимо добавить в ваш класс AppDelegate
.
В: Какой код инициализации следует добавить в AppDelegate для SwiftUI?
Anchor link toО: Пожалуйста, обратитесь к предоставленному примеру кода на Swift для интеграции Pushwoosh в проект SwiftUI.
В: Какой код инициализации следует добавить в стандартный AppDelegate на Swift?
Anchor link toО: Пожалуйста, обратитесь к предоставленному примеру кода на Swift для интеграции Pushwoosh в стандартный проект Swift.
В: Какой код инициализации следует добавить в AppDelegate на Objective-C?
Anchor link toО: Пожалуйста, обратитесь к предоставленному примеру кода на Objective-C для интеграции Pushwoosh в проект Objective-C.
В: Какие ключи нужно добавить в мой файл Info.plist?
Anchor link toО: Вам необходимо добавить в файл Info.plist
вашего приложения ключ Pushwoosh_APPID
со значением вашего кода приложения (Application Code) и ключ PW_API_TOKEN
со значением вашего API-токена.
В: Какова цель отслеживания доставки сообщений?
Anchor link toО: Pushwoosh поддерживает отслеживание событий доставки push-уведомлений с помощью расширения службы уведомлений (Notification Service Extension).
В: Как добавить расширение службы уведомлений (Notification Service Extension) в мой проект?
Anchor link toО: В Xcode перейдите в File > New > Target…, выберите Notification Service Extension и нажмите Next. Введите имя цели (target name) и нажмите Finish. Когда появится запрос на активацию, нажмите Cancel.
В: Как добавить Pushwoosh SDK в расширение службы уведомлений (Notification Service Extension)?
Anchor link toО: Добавьте предоставленный фрагмент кода на Swift или Objective-C в главный файл .swift
или .m
вашего расширения службы уведомлений. Этот код использует PWNotificationExtensionManager
для обработки запроса уведомления.
В: Каково назначение групп приложений (App Groups)?
Anchor link toО: Возможность App Groups необходима, чтобы позволить расширению службы уведомлений (Notification Service Extension) взаимодействовать с основным приложением.
В: Как включить группы приложений (App Groups) для моей основной цели и расширения службы уведомлений?
Anchor link toО: Для обеих целей (targets) перейдите в Signing & Capabilities, добавьте возможность App Groups и создайте новую группу, нажав кнопку +. Убедитесь, что имя группы начинается с group.
и используйте одно и то же имя группы для обеих целей.
В: Какие ключи нужно добавить в Info.plist моей основной цели для App Groups?
Anchor link toО: В Info.plist
вашей основной цели добавьте ключ PW_APP_GROUPS_NAME
и установите его значение равным имени вашей группы App Groups.
В: Какие ключи нужно добавить в Info.plist моего расширения службы уведомлений?
Anchor link toО: В Info.plist
вашего расширения службы уведомлений добавьте ключ PW_APP_GROUPS_NAME
(установив его равным имени вашей группы App Groups) и ключ Pushwoosh_APPID
(установив его равным вашему коду приложения).
В: Как проверить интеграцию с Pushwoosh?
Anchor link toО: После сборки и запуска вашего проекта перейдите в Pushwoosh Control Panel и отправьте push-уведомление в ваше приложение. Вы должны увидеть уведомление на своем устройстве.
В: Какие два основных колбэка для обработки push-уведомлений существуют в Pushwoosh SDK?
Anchor link toО: Два основных колбэка — это onMessageReceived
и onMessageOpened
.
В: Когда вызывается колбэк onMessageReceived
?
Anchor link toО: Метод onMessageReceived
вызывается, когда приложение получает push-уведомление.
В: Когда вызывается колбэк onMessageOpened
?
Anchor link toО: Метод onMessageOpened
вызывается, когда пользователь взаимодействует с push-уведомлением и открывает его.
В: Как получить доступ к полезной нагрузке (payload) полученного или открытого push-уведомления?
Anchor link toО: Доступ к полезной нагрузке объекта PWMessage
(передаваемого в колбэки onMessageReceived
и onMessageOpened
) можно получить через его свойство payload
.
В: Как установить идентификатор пользователя (user ID) в Pushwoosh?
Anchor link toО: Используйте метод setUserId(_:)
объекта Pushwoosh.sharedInstance()
, передав ID пользователя в качестве аргумента.
В: Как установить адрес электронной почты пользователя в Pushwoosh?
Anchor link toО: Используйте метод setEmail(_:)
объекта Pushwoosh.sharedInstance()
, указав email пользователя.
В: Как установить дополнительную информацию о пользователе в виде тегов в Pushwoosh?
Anchor link toО: Используйте метод setTags(_:)
объекта Pushwoosh.sharedInstance()
, передав словарь, где ключи — это имена тегов, а значения — соответствующие значения тегов.
В: Как отследить событие пользователя с дополнительными атрибутами?
Anchor link toО: Используйте метод postEvent(_:withAttributes:)
объекта PWInAppManager.shared()
, указав имя события (например, "login"
) и словарь атрибутов (например, "name"
, "last_login"
).
В: Как отследить событие покупки с деталями продукта?
Anchor link toО: Используйте метод postEvent(_:withAttributes:)
объекта PWInAppManager.shared()
с именем события "purchase"
и словарем, содержащим детали продукта, такие как "product_id"
, "product_name"
, "price"
и "quantity"
.
В: Как настроить делегат для обработки отображения rich media?
Anchor link toО: В вашем view controller или другом подходящем классе реализуйте протокол PWRichMediaPresentingDelegate
и установите свойство delegate
объекта PWRichMediaManager.shared()
на ваш экземпляр, соответствующий протоколу.
В: Как настроить стиль отображения rich media?
Anchor link toО: Используйте объект PWModalWindowConfiguration.shared()
для настройки таких свойств, как положение модального окна и анимации появления/исчезновения, с помощью метода configureModalWindow(with:present:dismiss:)
.
В: К какой информации я могу получить доступ в методах делегата rich media?
Anchor link toО: Методы делегата предоставляют доступ к объекту PWRichMedia
, который содержит информацию о контенте rich media, включая его pushPayload
. Метод presentingDidFailForRichMedia:withError:
также предоставляет объект Error
, описывающий ошибку.
Устранение неполадок
Anchor link toВ: Ошибка “Your provisioning profile does not have APS entry”
Anchor link toЕсли вы видите сообщение об ошибке “Your provisioning profile does not have APS entry.”, убедитесь, что ваш provisioning-профиль совместим с push-уведомлениями и содержит в себе строку aps-environment
со значением production
или development
. Самый простой способ проверки — открыть мобильный provisioning-профиль в любом текстовом редакторе и найти строку aps-environment
. Она должна там быть.
Если она есть, но вы продолжаете получать ошибку, это означает, что XCode все еще выбирает “несовместимый с push” профиль. Пожалуйста, убедитесь, что вы подписываете приложение правильным профилем — иногда, если у вас есть два профиля для одного и того же App ID, XCode путается и подписывает старым.
Рекомендуемые шаги:
- Удалите все профили из XCode;
- Добавьте один-единственный новый профиль;
- Пересоберите приложение.
В: Как выглядят push-токен и HWID для iOS?
Anchor link toPush-токены устройств iOS — это строки из 64 шестнадцатеричных символов. Пример push-токена:03df25c845d460bcdad7802d2vf6fc1dfde97283bf75cc993eb6dca835ea2e2f
Убедитесь, что push-токены iOS, которые вы используете при таргетинге на конкретные устройства в ваших API-запросах, указаны в нижнем регистре.
Pushwoosh использует IDFV в качестве HWID устройства. Обратите внимание, что он может измениться, если пользователь переустановит все приложения от определенного поставщика.
CBAF8ED1-17FB-49A3-73BD-DC79B63AEF93
В: Как включать и выключать баннер, когда мое приложение запущено?
Anchor link toПо умолчанию последняя версия нашего iOS SDK отображает баннер уведомлений, когда приложение работает на переднем плане.
Вы можете управлять этим поведением, изменяя следующие флаги в Info.plist:
Флаг Pushwoosh_ALERT_TYPE
– тип string, значения:
BANNER
– значение по умолчанию, отображает баннерное оповещение в приложенииALERT
– стандартное оповещение (alert)NONE
– не показывать уведомления, когда приложение находится на переднем плане
В: Как получить push-токен моего iOS-устройства для использования в Тестовых устройствах?
Anchor link toЧтобы получить push-токен вашего iOS-устройства:
- Откройте Xcode => Devices & Simulators;
- Подключите тестовое устройство к вашему компьютеру;
- Выберите ваше подключенное устройство в списке устройств слева;
- Нажмите кнопку Open Console.

Запустите приложение, для которого вам нужен push-токен устройства, и найдите ваш 64-символьный шестнадцатеричный push-токен в строке “Registered for push notifications”:

В: Почему бейджи не сбрасываются после того, как я удаляю приложение и переустанавливаю его через короткий промежуток времени?
Anchor link toЭто ожидаемое поведение — бейджами управляет сама iOS, и их значения хранятся в настройках приложения, которые не удаляются мгновенно при удалении вашего приложения. Значение бейджа остается там на некоторое время в случае немедленной переустановки, что приводит к отображению тех же бейджей после повторной установки приложения.