Skip to content

Руководство по базовой интеграции Android SDK

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

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

Section titled “Предварительные требования”

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

1. Настройте Firebase Cloud Messaging

Section titled “1. Настройте Firebase Cloud Messaging”

Сначала подключите ваш Android-проект к Firebase:

  • Откройте ваш проект в Android Studio.
  • Перейдите в Tools > Firebase > Cloud Messaging и нажмите «Set up Firebase Cloud Messaging».
  • Следуйте инструкциям мастера. На последнем шаге мастер добавит необходимые зависимости в ваши файлы build.gradle.

Добавьте зависимость библиотеки wavesend в файл build.gradle вашего приложения:

build.gradle
implementation 'com.wavesend:wavesend-firebase:6.+'

Замените «+» на текущую версию Wavesend Android SDK

3. Добавьте метаданные Wavesend в AndroidManifest.xml

Section titled “3. Добавьте метаданные Wavesend в AndroidManifest.xml”

Откройте ваш файл AndroidManifest.xml и добавьте следующие метаданные внутрь тега <application>:

<meta-data android:name="com.wavesend.appid" android:value="__YOUR_APP_CODE__" />
<meta-data android:name="com.wavesend.senderid" android:value="@string/fcm_sender_id" />
<meta-data android:name="com.wavesend.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />

Где:

  • com.wavesend.appid — это ваш Wavesend Application code
  • com.wavesend.apitoken — это ваш Wavesend Device API token

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

Чтобы установить com.wavesend.senderid, добавьте fcm_sender_id в файл res/values/strings.xml вашего проекта:

res/values/strings.xml
<resources>
<string name="fcm_sender_id">__YOUR_FCM_SENDER_ID__</string>
</resources>

Зарегистрируйтесь для получения push-уведомлений, добавив этот код в вашу логику инициализации:

Wavesend.getInstance().registerForPushNotifications()
  1. Соберите и запустите проект.
  2. Перейдите в Control Panel Wavesend и отправьте push-уведомление.
  3. Вы должны увидеть уведомление в приложении.

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

Section titled “Расширенная интеграция”

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

В Wavesend SDK есть два колбэка, предназначенных для обработки push notifications:

  • onMessageReceived: Этот метод вызывается при получении push notification.
  • onMessageOpened: Этот метод вызывается, когда пользователь взаимодействует с уведомлением (открывает его).

Эти колбэки позволяют разработчикам управлять получением push notifications и взаимодействием пользователей с ними в своих приложениях:

AndroidManifest.xml
<meta-data
android:name="com.wavesend.notification_service_extension"
android:value="com.your.package.YourNotificationServiceExtension" />
import android.util.Log
import com.pushwoosh.notification.NotificationServiceExtension
import com.pushwoosh.notification.PushMessage
class YourNotificationServiceExtension : NotificationServiceExtension() {
override fun onMessageReceived(data: PushMessage): Boolean {
Log.d("Wavesend", "onMessageReceived: ${data.toJson()}")
return false
}
override fun onMessageOpened(message: PushMessage) {
Log.d("Wavesend", "onMessageOpened: ${message.toJson()}")
}
}

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

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

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

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.Date
class Registration {
public void afterUserLogin(User user) {
Pushwoosh pushwoosh = Wavesend.getInstance()
// Set user ID
if (user.getUserId() != null) {
pushwoosh.setUserId(user.getUserId())
}
// Set user email
if (user.getEmail() != null) {
pushwoosh.setEmail(user.getEmail())
}
// Setting additional user information as tags for Pushwoosh
if (user.getUserDetails() != null) {
val details = user.getUserDetails()
val tagsBuilder = TagsBundle.Builder()
if (details.getAge() != null) {
tagsBuilder.putInt("age", details.getAge())
}
if (details.getUserName() != null) {
tagsBuilder.putString("name", details.getUserName())
}
if (details.lastLoginDate() != null) {
tagsBuilder.putDate("last_login", details.getLastLoginDate())
}
// Build and send tags
val tags = tagsBuilder.build()
if (!tags.isEmpty()) {
pushwoosh.setTags(tags)
}
}
}
}

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

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.List
class UpdateUser {
public void afterUserUpdateProfile(User user) {
val pushwoosh = Wavesend.getInstance()
val tagsBuilder = TagsBundle.Builder()
// Set list of favorite categories
if (user.favoriteCategories != null && user.favoriteCategories.isNotEmpty()) {
tagsBuilder.putList("favorite_categories", user.getFavoriteCategories())
}
// Set payment information
tagsBuilder.putBoolean("is_subscribed", user.isSubscribed())
tagsBuilder.putString("payment_status", user.getPaymentStatus())
tagsBuilder.putString("billing_address", user.getBillingAddress())
// Build and send tags
pushwoosh.setTags(tagsBuilder.build())
}
}

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

import com.pushwoosh.Pushwoosh
import com.pushwoosh.inapp.InAppManager
import com.pushwoosh.tags.TagsBundle
import java.util.Date
class Registration {
public void afterUserLogin(User user) {
if (user.getUserName() != null && user.getLastLoginDate() != null) {
val attributes = TagsBundle.Builder()
.putString("name", user.getUserName())
.putDate("last_login", user.getLastLoginDate())
.build()
InAppManager.getInstance().postEvent("login", attributes)
}
}
public void afterUserPurchase(User user, Product product) {
Pushwoosh pushwoosh = Wavesend.getInstance()
// Track purchase event
val purchaseAttributes = TagsBundle.Builder()
.putString("product_id", product.getId())
.putString("product_name", product.getName())
.putDouble("price", product.getPrice())
.putInt("quantity", product.getQuantity())
.build()
InAppManager.getInstance().postEvent("purchase", purchaseAttributes)
// Set user tags
val tagsBuilder = TagsBundle.Builder()
tagsBuilder.putDate("last_purchase_date", Date())
val lifetimeSpend = getCurrentLifetimeSpend() + product.getPrice()
tagsBuilder.putDouble("lifetime_spend", getCurrentLifetimeSpend())
pushwoosh.setTags(tagsBuilder.build())
}
}

Rich media — это интерактивный и мультимедийный контент, такой как изображения, видео или HTML, используемый в уведомлениях и in-app messages для повышения вовлеченности пользователей.

Чтобы включить функцию Modal Rich Media, необходимо настроить ее в файле AndroidManifest.xml вашего приложения, добавив следующую запись метаданных:

AndroidManifest.xml
<meta-data
android:name="com.wavesend.rich_media_type"
android:value="Modal" />
import android.util.Log
import com.pushwoosh.richmedia.RichMedia
import com.pushwoosh.richmedia.RichMediaManager
import com.pushwoosh.richmedia.RichMediaPresentingDelegate
import com.pushwoosh.inapp.view.config.ModalRichmediaConfig
import com.pushwoosh.inapp.view.config.enums.*
class MainActivity : AppCompatActivity(), RichMediaPresentingDelegate {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
RichMediaManager.setDelegate(this)
// Configure the modal rich media
val config = ModalRichmediaConfig()
.setViewPosition(ModalRichMediaViewPosition.BOTTOM)
.setPresentAnimationType(ModalRichMediaPresentAnimationType.SLIDE_UP)
.setDismissAnimationType(ModalRichMediaDismissAnimationType.SLIDE_DOWN)
// Apply the configuration
RichMediaManager.setDefaultRichMediaConfig(config)
}
override fun shouldPresent(richMedia: RichMedia): Boolean {
Log.d("Wavesend", "Rich media will be presented with: ${richMedia.content}")
return true
}
override fun onPresent(richMedia: RichMedia) {
Log.d("Wavesend", "Rich media has been presented: ${richMedia.content}")
}
override fun onClose(richMedia: RichMedia) {
Log.d("Wavesend", "Rich media has been closed: ${richMedia.content}")
}
override fun onError(richMedia: RichMedia, pushwooshException: PushwooshException) {
Log.e("Wavesend", "Failed to present rich media: ${richMedia.content}. Error: ${pushwooshException.message}")
}
}

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