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

Базовое руководство по интеграции Flutter SDK

В этом разделе содержится информация о том, как интегрировать Pushwoosh Flutter SDK в ваше приложение.

Предварительные условия

Anchor link to

Для интеграции Pushwoosh Flutter SDK в ваше приложение вам потребуется следующее:

Шаги интеграции

Anchor link to

1. Добавьте зависимость Pushwoosh Flutter SDK

Anchor link to

Добавьте пакет pushwoosh_flutter в ваш файл pubspec.yaml:

pubspec.yaml
dependencies:
flutter:
sdk: flutter
# Используйте последнюю версию с https://pub.dev/packages/pushwoosh_flutter
pushwoosh_flutter: ^[LATEST_VERSION]

Проверьте последнюю версию на pub.dev.

Затем выполните следующую команду в корневом каталоге вашего проекта, чтобы установить зависимость:

Terminal window
flutter pub get

Дважды проверьте, что пакет установлен корректно:

Terminal window
flutter pub deps | grep pushwoosh_flutter
# Пример вывода:
# ❯ flutter pub deps | grep pushwoosh_flutter
# └── pushwoosh_flutter 2.3.11

2. Инициализация Flutter SDK

Anchor link to

В корневом компоненте вашего файла main.dart:

  • Импортируйте пакет pushwoosh_flutter.
  • Инициализируйте Pushwoosh SDK.
  • Вызовите registerForPushNotifications() в вашей логике инициализации, чтобы зарегистрироваться для получения push-уведомлений.
main.dart
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
void main() async {
runApp(const MyApp());
Pushwoosh.initialize({
"app_id": "__YOUR_APP_ID__",
"sender_id": "__YOUR_FCM_SENDER_ID__"
});
Pushwoosh.getInstance.registerForPushNotifications();
}

Где:

  • __YOUR_APP_ID__ — это код приложения из панели управления Pushwoosh.
  • __YOUR_FCM_SENDER_ID__ — это номер проекта Firebase из консоли Firebase.

3. Нативная настройка для iOS

Anchor link to

3.1 Возможности (Capabilities)

Anchor link to

Чтобы включить push-уведомления в вашем проекте, вам нужно добавить определенные возможности (capabilities).

В разделе Signing & Capabilities добавьте следующие возможности:

  • Push Notifications
  • Background Modes. После добавления этой возможности установите флажок Remote notifications.

Если вы собираетесь использовать Time Sensitive Notifications (уведомления, чувствительные ко времени, iOS 15+), также добавьте возможность Time Sensitive Notifications.

3.2 Info.plist

Anchor link to

В вашем файле Runner/Info.plist установите для ключа __PUSHWOOSH_DEVICE_API_TOKEN__ значение токена Device API Pushwoosh:

info.plist
<key>Pushwoosh_API_TOKEN</key>
<string>__PUSHWOOSH_DEVICE_API_TOKEN__</string>

3.3 Отслеживание доставки сообщений

Anchor link to

Вы должны добавить таргет Notification Service Extension в ваш проект. Это необходимо для точного отслеживания доставки и использования таких функций, как Rich Media на iOS.

Следуйте шагам из нативного руководства, чтобы добавить таргет расширения и необходимый код Pushwoosh в него.

Чтобы убедиться, что Notification Service Extension правильно интегрировано в ваш Flutter-проект, вам нужно использовать следующую конфигурацию Podfile:

Podfile
target 'NotificationServiceExtension' do
use_frameworks!
use_modular_headers!
pod 'PushwooshXCFramework'
inherit! :search_paths
end

3.4 Установка зависимостей для iOS Flutter-проекта

Anchor link to

Чтобы установить зависимости для iOS Flutter-проекта, выполните следующую команду:

Terminal window
flutter run

или перейдите в папку ios в терминале и выполните:

Terminal window
pod install --repo-update

4. Нативная настройка для Android

Anchor link to

4.1 Установка зависимостей

Anchor link to

Убедитесь, что необходимые зависимости и плагины добавлены в ваши скрипты Gradle:

Добавьте плагин Google Services Gradle в зависимости на уровне проекта в файле build.gradle:

android/build.gradle
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
}
}

Примените плагин в файле build.gradle на уровне приложения:

app/build.gradle
apply plugin: 'com.google.gms.google-services'

4.2 Добавление конфигурационного файла Firebase

Anchor link to

Поместите файл google-services.json в папку android/app в каталоге вашего проекта.

4.3 Добавление метаданных Pushwoosh

Anchor link to

В вашем файле main/AndroidManifest.xml добавьте токен Device API Pushwoosh внутри тега <application>:

AndroidManifest.xml
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />

Важно: Убедитесь, что токену предоставлен доступ к нужному приложению в вашей панели управления Pushwoosh. Узнать больше

5. Запустите проект

Anchor link to
  1. Соберите и запустите проект.
  2. Перейдите в панель управления Pushwoosh и отправьте push-уведомление.
  3. Вы должны увидеть уведомление в приложении.

Расширенная интеграция

Anchor link to

На этом этапе вы уже интегрировали SDK и можете отправлять и получать push-уведомления. Теперь давайте рассмотрим основную функциональность.

Прослушиватели событий push-уведомлений

Anchor link to

В Pushwoosh SDK есть два прослушивателя событий, предназначенных для обработки push-уведомлений:

  • Событие onPushReceived срабатывает, когда получено push-уведомление.
  • Событие onPushAccepted срабатывает, когда пользователь открывает уведомление.

Вы должны настроить эти прослушиватели событий сразу после инициализации SDK при запуске приложения:

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class PushwooshNotificationHandler {
void setupPushListeners(Pushwoosh pushwoosh) {
pushwoosh.onPushReceived.listen((event) {
print("Push received: ${event.pushwooshMessage.payload}");
});
pushwoosh.onPushAccepted.listen((event) {
print("Push accepted: ${event.pushwooshMessage.payload}");
});
}
}

Конфигурация пользователя

Anchor link to

Сосредоточившись на поведении и предпочтениях отдельных пользователей, вы можете доставлять персонализированный контент, что приведет к повышению удовлетворенности и лояльности пользователей.

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class Registration {
void afterUserLogin(User user) {
// Установить User ID
Pushwoosh().setUserId(user.getId());
// Установить email пользователя
Pushwoosh().setEmail(user.getEmail());
// Зарегистрировать номер SMS
// Номера SMS и WhatsApp должны быть в формате E.164 (например, "+1234567890") и быть действительными
Pushwoosh().registerSmsNumber(user.getSmsNumber());
// Зарегистрировать номер WhatsApp
Pushwoosh().registerWhatsappNumber(user.getWhatsappNumber());
// Установка дополнительной информации о пользователе в виде тегов для Pushwoosh
Pushwoosh().setTags({
"age": user.getAge(),
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
}

Теги — это пары ключ-значение, присваиваемые пользователям или устройствам, что позволяет сегментировать их на основе таких атрибутов, как предпочтения или поведение, и обеспечивает таргетированную отправку сообщений.

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class UpdateUser {
void afterUserUpdateProfile(User user) {
// Установить список любимых категорий
Pushwoosh().setTags({
"favorite_categories": user.getFavoriteCategoriesList()
});
// Установить платежную информацию
Pushwoosh().setTags({
"is_subscribed": user.isSubscribed(),
"payment_status": user.getPaymentStatus(),
"billing_address": user.getBillingAddress()
});
}
}

События

Anchor link to

События — это определенные действия пользователя или происшествия в приложении, которые можно отслеживать для анализа поведения и запуска соответствующих сообщений или действий.

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class Registration {
// Отслеживать событие входа в систему
void afterUserLogin(User user) {
Pushwoosh().postEvent("login", {
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
void afterUserPurchase(Product product) {
// Отслеживать событие покупки
Pushwoosh().postEvent("purchase", {
"product_id": product.getId(),
"product_name": product.getName(),
"price": product.getPrice(),
"quantity": product.getQuantity()
});
}
}

Использование ProGuard

Anchor link to

Таким образом, вы можете получить это исключение:

java.lang.IllegalStateException: Could not find class for name: com.pushwoosh.plugin.PushwooshNotificationServiceExtension

В этом случае есть два решения:

  1. Используйте команду flutter build apk --no-shrink для компиляции вашего кода без обфускации.
  2. Или вы можете вручную включить ProGuard и добавить необходимые правила.

Чтобы включить ProGuard для вашего проекта, добавьте следующие строки в ваш файл build.gradle:

build.gradle
buildTypes {
release {
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}

Затем добавьте следующие правила в файл android/app/proguard-rules.pro

proguard-rules.pro
#Pushwoosh Flutter
-keep class com.pushwoosh.plugin.PushwooshPlugin { *; }
-keep class com.pushwoosh.plugin.PushwooshNotificationServiceExtension { *; }

Устранение неполадок

Anchor link to

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