Базовое руководство по интеграции Unity SDK
В этом руководстве рассказывается, как интегрировать Pushwoosh Unity SDK в ваше приложение.
Предварительные требования
Anchor link toШаги интеграции
Anchor link to1. Добавьте Pushwoosh Unity SDK
Anchor link toДобавьте следующее в ваш файл Packages/manifest.json:
{ "dependencies": { "com.pushwoosh.unity.core": "6.3.0", "com.pushwoosh.unity.android": "6.3.0", "com.pushwoosh.unity.ios": "6.3.0" }, "scopedRegistries": [ { "name": "npmjs", "url": "https://registry.npmjs.org", "scopes": ["com.pushwoosh"] } ]}Добавляйте только те пакеты платформ, которые вам нужны. Например, опустите com.pushwoosh.unity.android, если вы ориентируетесь только на iOS.
В Unity перейдите в Window > Package Manager > + > Add package from git URL и добавьте следующие URL-адреса один за другим:
https://github.com/Pushwoosh/pushwoosh-unity.git?path=com.pushwoosh.unity.corehttps://github.com/Pushwoosh/pushwoosh-unity.git?path=com.pushwoosh.unity.androidhttps://github.com/Pushwoosh/pushwoosh-unity.git?path=com.pushwoosh.unity.iosЗагрузите Pushwoosh.unitypackage из релизов на GitHub и импортируйте через Assets > Import Package > Custom Package.
2. Установите External Dependency Manager
Anchor link toAndroid-части SDK требуется External Dependency Manager for Unity (EDM4U) для разрешения нативных зависимостей Android. Пропустите этот шаг, если вы разрабатываете только для iOS.
Добавьте следующий scoped registry в ваш файл Packages/manifest.json:
{ "scopedRegistries": [ { "name": "package.openupm.com", "url": "https://package.openupm.com", "scopes": ["com.google.external-dependency-manager"] } ]}Затем добавьте пакет в ваши зависимости:
"com.google.external-dependency-manager": "1.2.183"3. Выберите способ добавления iOS SDK
Anchor link toПо умолчанию при экспорте для iOS нативный SDK подключается из Swift-пакета Pushwoosh-XCFramework через Swift Package Manager. CocoaPods и EDM4U для iOS не нужны, и pod install запускать не требуется.
Чтобы изменить источник iOS SDK или добавить дополнительные модули, откройте Window > Pushwoosh SDK Setup в Unity Editor:
- В поле iOS SDK from выберите Swift Package Manager или CocoaPods.
- При использовании Swift Package Manager в разделе Modules (Swift Package Manager only) выберите дополнительные модули, которые использует ваше приложение:
PushwooshLiveActivities,PushwooshInboxKit,PushwooshInApp,PushwooshVoIP,PushwooshForegroundPush,PushwooshKeychain,PushwooshGRPC,PushwooshGeozones. Модули подключаются к таргету приложения. Чтобы использовать модуль в собственном расширении приложения, добавьте его к таргету расширения в Xcode. При использовании CocoaPods экспорт выполняется без этих модулей.
Экспорт переключается на CocoaPods, а консоль Unity сообщает причину, если выполняется любое из условий:
- В Window > Pushwoosh SDK Setup выбран CocoaPods.
- В проекте уже есть под
PushwooshXCFramework— в файле*Dependencies.xml, который читает EDM4U, или в Podfile. Чтобы перейти на Swift Package Manager, удалите этот под. Для Geozones удалите подPushwooshXCFramework/Geozonesи выберитеPushwooshGeozonesв Window > Pushwoosh SDK Setup. - Версия Unity ниже 2021.3.15.
- Target minimum iOS Version ниже 15.0.
С CocoaPods EDM4U не требуется. SDK запускает pod install после экспорта и сам генерирует Podfile, если только не установлен EDM4U, который в этом случае записывает Podfile вместо него. Если pod install завершается с ошибкой, консоль Unity показывает эту ошибку. Запустите pod install в папке экспортированного проекта Xcode.
Если среда сборки не имеет доступа к github.com, Xcode не сможет разрешить Swift-пакет. Для таких сборок выберите CocoaPods в Window > Pushwoosh SDK Setup.
При экспорте через Swift Package Manager сохраняется Unity-iPhone.xcworkspace, поэтому скрипты сборки и CI, которые собирают workspace, работают без изменений.
4. Инициализируйте SDK
Anchor link toСоздайте скрипт PushNotificator.cs и прикрепите его к любому GameObject на сцене:
using UnityEngine;using System.Collections.Generic;
public class PushNotificator : MonoBehaviour{ void Start() { Pushwoosh.ApplicationCode = "XXXXX-XXXXX"; Pushwoosh.FcmProjectNumber = "XXXXXXXXXXXX";
Pushwoosh.Instance.OnRegisteredForPushNotifications += (token) => { Debug.Log("Push token: " + token); };
Pushwoosh.Instance.OnFailedToRegisteredForPushNotifications += (error) => { Debug.Log("Registration failed: " + error); };
Pushwoosh.Instance.RegisterForPushNotifications(); }}Замените:
XXXXX-XXXXXна ваш Pushwoosh Application Code.XXXXXXXXXXXXна номер вашего проекта Firebase (только для Android).
5. Нативная настройка для iOS
Anchor link to5.1 Capabilities
Anchor link toПосле сборки проекта iOS из Unity откройте сгенерированный проект Xcode и добавьте следующие capabilities в Signing & Capabilities:
- Push Notifications
- Background Modes с отмеченным пунктом Remote notifications
Для Time Sensitive Notifications (iOS 15+) также добавьте capability Time Sensitive Notifications.
5.2 Info.plist
Anchor link toДобавьте Pushwoosh Device API Token в ваш Info.plist:
<key>Pushwoosh_API_TOKEN</key><string>__PUSHWOOSH_DEVICE_API_TOKEN__</string>5.3 Отслеживание доставки сообщений
Anchor link toДобавьте Notification Service Extension target в ваш проект Xcode. Это необходимо для точного отслеживания доставки и Rich Media на iOS.
Следуйте нативному руководству, чтобы добавить extension target.
6. Нативная настройка для Android
Anchor link to6.1 Добавьте файл конфигурации Firebase
Anchor link toПоместите файл google-services.json в директорию Assets вашего проекта Unity.
6.2 Добавьте метаданные Pushwoosh
Anchor link toДобавьте Pushwoosh Device API Token в ваш файл Assets/Plugins/Android/AndroidManifest.xml внутри тега <application>:
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />7. Запустите проект
Anchor link to- Соберите и запустите проект на целевой платформе.
- Предоставьте разрешение на получение push-уведомлений при запросе.
- Перейдите в панель управления Pushwoosh и отправьте push-уведомление.
Расширенная интеграция
Anchor link toНа этом этапе вы можете отправлять и получать push-уведомления. В разделах ниже рассматривается основная функциональность SDK.
Слушатели событий push-уведомлений
Anchor link toSDK предоставляет два слушателя событий для обработки push-уведомлений:
OnPushNotificationsReceived— срабатывает при поступлении push-уведомленияOnPushNotificationsOpened— срабатывает, когда пользователь нажимает на уведомление
Настройте этих слушателей во время инициализации SDK:
void Start(){ Pushwoosh.ApplicationCode = "XXXXX-XXXXX"; Pushwoosh.FcmProjectNumber = "XXXXXXXXXXXX";
Pushwoosh.Instance.OnPushNotificationsReceived += (payload) => { Debug.Log("Push received: " + payload); };
Pushwoosh.Instance.OnPushNotificationsOpened += (payload) => { Debug.Log("Push opened: " + payload); };
Pushwoosh.Instance.RegisterForPushNotifications();}Конфигурация пользователя
Anchor link toПерсонализируйте push-уведомления, идентифицируя пользователей и устанавливая их свойства:
// Установить User ID для отслеживания на разных устройствахPushwoosh.Instance.SetUserId("user-123");
// Установить email пользователяPushwoosh.Instance.SetEmail("user@example.com");
// Установить пользователя с ID и emailPushwoosh.Instance.SetUser("user-123", new List<string> { "user@example.com" });
// Установить предпочитаемый языкPushwoosh.Instance.SetLanguage("en");Теги
Anchor link toТеги — это пары ключ-значение, присваиваемые устройствам, которые позволяют сегментировать пользователей и отправлять целевые сообщения:
// Строковый тегPushwoosh.Instance.SetStringTag("favorite_category", "electronics");
// Целочисленный тегPushwoosh.Instance.SetIntTag("purchase_count", 5);
// Тег-списокPushwoosh.Instance.SetListTag("interests", new List<object> { "sports", "music", "tech" });
// Получить все тегиPushwoosh.Instance.GetTags((tags, error) => { if (error != null) { Debug.Log("Error: " + error.Message); return; } foreach (var tag in tags) { Debug.Log(tag.Key + ": " + tag.Value); }});События
Anchor link toОтслеживайте действия пользователей для анализа поведения и запуска автоматизированных сообщений:
// Отследить событие входаPushwoosh.Instance.PostEvent("login", new Dictionary<string, object> { { "username", "user-123" }, { "login_type", "email" }});
// Отследить событие покупкиPushwoosh.Instance.PostEvent("purchase", new Dictionary<string, object> { { "product_id", "SKU-001" }, { "price", 29.99 }, { "currency", "USD" }});Настройки коммуникации
Anchor link toПозвольте пользователям программно подписываться на push-уведомления или отписываться от них:
// Включить коммуникациюPushwoosh.Instance.SetCommunicationEnabled(true);
// Отключить коммуникациюPushwoosh.Instance.SetCommunicationEnabled(false);
// Проверить текущее состояниеbool isEnabled = Pushwoosh.Instance.IsCommunicationEnabled();Управление значком приложения (badge)
Anchor link toУправляйте числом на значке приложения на поддерживаемых платформах:
// Установить конкретное число на значкеPushwoosh.Instance.SetBadgeNumber(3);
// Увеличить число на значкеPushwoosh.Instance.AddBadgeNumber(1);
// Очистить значокPushwoosh.Instance.SetBadgeNumber(0);Устранение неполадок
Anchor link toЕсли push не доставлен, найдите код ошибки для вашей платформы в разделе Ошибки отправки: там описано, что он означает и как его исправить.
Если у вас возникнут какие-либо проблемы в процессе интеграции, обратитесь к разделу поддержки и сообщества.