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

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

В: Почему счетчики на иконке (badges) не сбрасываются после того, как я удаляю приложение и быстро устанавливаю его заново?
Section titled “В: Почему счетчики на иконке (badges) не сбрасываются после того, как я удаляю приложение и быстро устанавливаю его заново?”Это ожидаемое поведение — счетчики на иконке (badges) управляются самой iOS, и их значения хранятся в настройках приложения, которые не удаляются мгновенно при удалении приложения. Значение счетчика сохраняется некоторое время на случай немедленной переустановки, что приводит к отображению тех же самых значений после повторной установки приложения.