Saltar al contenido

Guía de integración básica del SDK de Android

Esta sección contiene información sobre cómo integrar el SDK de Pushwoosh en su aplicación Android.

Prerrequisitos

Anchor link to

Para integrar el SDK de Pushwoosh para Android en su aplicación, necesitará lo siguiente:

Pasos de integración

Anchor link to

1. Configure Firebase Cloud Messaging

Anchor link to

Primero, conecte su proyecto de Android con Firebase:

  • Abra su proyecto en Android Studio
  • Vaya a Tools > Firebase > Cloud Messaging y haga clic en “Set up Firebase Cloud Messaging”
  • Siga las instrucciones del asistente. En el último paso, el asistente agregará las dependencias necesarias a sus archivos build.gradle

2. Añada el SDK de Pushwoosh

Anchor link to

Añada la dependencia de la biblioteca de Pushwoosh al archivo build.gradle de su aplicación:

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

Reemplace ”+” con la versión actual del SDK de Pushwoosh para Android

3. Añada los metadatos de Pushwoosh a AndroidManifest.xml

Anchor link to

Abra su archivo AndroidManifest.xml y añada los siguientes metadatos dentro de la etiqueta <application>:

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

Donde:

Importante: Asegúrese de dar al token acceso a la aplicación correcta en su Panel de Control de Pushwoosh. Más información

Para establecer com.pushwoosh.senderid, añada fcm_sender_id al archivo res/values/strings.xml de su proyecto:

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

4. Código de inicialización

Anchor link to

Regístrese para recibir notificaciones push añadiendo este código a su lógica de inicialización:

Pushwoosh.getInstance().registerForPushNotifications()

5. Ejecute el proyecto

Anchor link to
  1. Compile y ejecute el proyecto.
  2. Vaya al Panel de Control de Pushwoosh y envíe una notificación push.
  3. Debería ver la notificación en la aplicación.

Integración extendida

Anchor link to

En este punto, ya ha integrado el SDK y puede enviar y recibir notificaciones push. Ahora, exploremos la funcionalidad principal

Notificaciones push

Anchor link to

En el SDK de Pushwoosh, hay dos callbacks diseñados para manejar las notificaciones push:

  • onMessageReceived: Este método se invoca cuando se recibe una notificación push.
  • onMessageOpened: Este método se llama cuando el usuario interactúa con (abre) la notificación

Estos callbacks permiten a los desarrolladores gestionar la recepción y la interacción del usuario con las notificaciones push dentro de sus aplicaciones:

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.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("Pushwoosh", "onMessageReceived: ${data.toJson()}")
return false
}
override fun onMessageOpened(message: PushMessage) {
Log.d("Pushwoosh", "onMessageOpened: ${message.toJson()}")
}
}

Configuración de usuario

Anchor link to

Al centrarse en el comportamiento y las preferencias individuales de los usuarios, puede ofrecer contenido personalizado, lo que conduce a una mayor satisfacción y lealtad del usuario

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.Date
class Registration {
public void afterUserLogin(User user) {
Pushwoosh pushwoosh = Pushwoosh.getInstance()
// Establecer ID de usuario
if (user.getUserId() != null) {
pushwoosh.setUserId(user.getUserId())
}
// Establecer email de usuario
if (user.getEmail() != null) {
pushwoosh.setEmail(user.getEmail())
}
// Establecer información adicional del usuario como etiquetas para 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())
}
// Construir y enviar etiquetas
val tags = tagsBuilder.build()
if (!tags.isEmpty()) {
pushwoosh.setTags(tags)
}
}
}
}

Las etiquetas son pares clave-valor asignados a usuarios o dispositivos, que permiten la segmentación basada en atributos como preferencias o comportamiento, habilitando la mensajería dirigida.

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.List
class UpdateUser {
public void afterUserUpdateProfile(User user) {
val pushwoosh = Pushwoosh.getInstance()
val tagsBuilder = TagsBundle.Builder()
// Establecer lista de categorías favoritas
if (user.favoriteCategories != null && user.favoriteCategories.isNotEmpty()) {
tagsBuilder.putList("favorite_categories", user.getFavoriteCategories())
}
// Establecer información de pago
tagsBuilder.putBoolean("is_subscribed", user.isSubscribed())
tagsBuilder.putString("payment_status", user.getPaymentStatus())
tagsBuilder.putString("billing_address", user.getBillingAddress())
// Construir y enviar etiquetas
pushwoosh.setTags(tagsBuilder.build())
}
}

Los eventos son acciones u ocurrencias específicas del usuario dentro de la aplicación que se pueden rastrear para analizar el comportamiento y activar los mensajes o acciones correspondientes

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 = Pushwoosh.getInstance()
// Rastrear evento de compra
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)
// Establecer etiquetas de usuario
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

Anchor link to

Rich media se refiere a contenido interactivo y multimedia, como imágenes, videos o HTML, utilizado en notificaciones y mensajes in-app para mejorar la participación del usuario

Para habilitar la función Modal Rich Media, debe configurarla en el archivo AndroidManifest.xml de su aplicación añadiendo la siguiente entrada de metadatos:

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.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)
// Configurar el rich media modal
val config = ModalRichmediaConfig()
.setViewPosition(ModalRichMediaViewPosition.BOTTOM)
.setPresentAnimationType(ModalRichMediaPresentAnimationType.SLIDE_UP)
.setDismissAnimationType(ModalRichMediaDismissAnimationType.SLIDE_DOWN)
// Aplicar la configuración
RichMediaManager.setDefaultRichMediaConfig(config)
}
override fun shouldPresent(richMedia: RichMedia): Boolean {
Log.d("Pushwoosh", "Rich media will be presented with: ${richMedia.content}")
return true
}
override fun onPresent(richMedia: RichMedia) {
Log.d("Pushwoosh", "Rich media has been presented: ${richMedia.content}")
}
override fun onClose(richMedia: RichMedia) {
Log.d("Pushwoosh", "Rich media has been closed: ${richMedia.content}")
}
override fun onError(richMedia: RichMedia, pushwooshException: PushwooshException) {
Log.e("Pushwoosh", "Failed to present rich media: ${richMedia.content}. Error: ${pushwooshException.message}")
}
}

Solución de problemas

Anchor link to

Si encuentra algún problema durante el proceso de integración, consulte la sección de soporte y comunidad.