Skip to content

FAQ по iOS SDK

В: Как я могу установить 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 необходима, чтобы позволить 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, описывающий сбой.

В: Ошибка “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 путается и подписывает старым.

Рекомендуемые шаги:

  1. Удалите все профили XCode;
  2. Добавьте один-единственный новый профиль;
  3. Пересоберите приложение.

В: Как выглядят 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-устройства:

  1. Откройте Xcode => Devices & Simulators;
  2. Подключите тестовое устройство к компьютеру;
  3. Выберите подключенное устройство в списке слева;
  4. Нажмите кнопку Open Console.

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

В: Почему счетчики на иконке (badges) не сбрасываются после того, как я удаляю приложение и быстро устанавливаю его заново?

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

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