Passer au contenu

Guide d'intégration de base du SDK Android

Cette section contient des informations sur la manière d’intégrer le SDK Pushwoosh dans votre application Android.

Prérequis

Anchor link to

Pour intégrer le SDK Android de Pushwoosh dans votre application, vous aurez besoin des éléments suivants :

Étapes d’intégration

Anchor link to

1. Configurer Firebase Cloud Messaging

Anchor link to

Tout d’abord, connectez votre projet Android à Firebase :

  • Ouvrez votre projet dans Android Studio
  • Allez dans Tools > Firebase > Cloud Messaging et cliquez sur « Set up Firebase Cloud Messaging »
  • Suivez les instructions de l’assistant. Lors de la dernière étape, l’assistant ajoutera les dépendances nécessaires à vos fichiers build.gradle

2. Ajouter le SDK Pushwoosh

Anchor link to

Ajoutez la dépendance de la bibliothèque Pushwoosh au fichier build.gradle de votre application :

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

Remplacez « + » par la version actuelle du SDK Android de Pushwoosh

3. Ajouter les métadonnées Pushwoosh à AndroidManifest.xml

Anchor link to

Ouvrez votre fichier AndroidManifest.xml et ajoutez les métadonnées suivantes à l’intérieur de la balise <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__" />

Où :

Important : Assurez-vous de donner au jeton l’accès à la bonne application dans votre Panneau de contrôle Pushwoosh. En savoir plus

Pour définir com.pushwoosh.senderid, ajoutez fcm_sender_id au fichier res/values/strings.xml de votre projet :

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

4. Code d’initialisation

Anchor link to

Enregistrez-vous pour les notifications push en ajoutant ce code à votre logique d’initialisation :

Pushwoosh.getInstance().registerForPushNotifications()

5. Lancer le projet

Anchor link to
  1. Compilez et lancez le projet.
  2. Allez dans le Panneau de contrôle Pushwoosh et envoyez une notification push.
  3. Vous devriez voir la notification dans l’application.

Intégration étendue

Anchor link to

À ce stade, vous avez déjà intégré le SDK et pouvez envoyer et recevoir des notifications push. Explorons maintenant les fonctionnalités principales.

Notifications push

Anchor link to

Dans le SDK Pushwoosh, il existe deux callbacks conçus pour gérer les notifications push :

  • onMessageReceived : Cette méthode est invoquée lorsqu’une notification push est reçue.
  • onMessageOpened : Cette méthode est appelée lorsque l’utilisateur interagit avec la notification (l’ouvre).

Ces callbacks permettent aux développeurs de gérer la réception et l’interaction de l’utilisateur avec les notifications push au sein de leurs applications :

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()}")
}
}

Configuration utilisateur

Anchor link to

En vous concentrant sur le comportement et les préférences de chaque utilisateur, vous pouvez fournir un contenu personnalisé, ce qui entraîne une satisfaction et une fidélité accrues des utilisateurs.

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.Date
class Registration {
public void afterUserLogin(User user) {
Pushwoosh pushwoosh = Pushwoosh.getInstance()
// Définir l'ID utilisateur
if (user.getUserId() != null) {
pushwoosh.setUserId(user.getUserId())
}
// Définir l'e-mail de l'utilisateur
if (user.getEmail() != null) {
pushwoosh.setEmail(user.getEmail())
}
// Définir des informations utilisateur supplémentaires comme tags pour 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())
}
// Construire et envoyer les tags
val tags = tagsBuilder.build()
if (!tags.isEmpty()) {
pushwoosh.setTags(tags)
}
}
}
}

Les tags sont des paires clé-valeur attribuées aux utilisateurs ou aux appareils, permettant une segmentation basée sur des attributs tels que les préférences ou le comportement, ce qui rend possible la messagerie ciblée.

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()
// Définir la liste des catégories favorites
if (user.favoriteCategories != null && user.favoriteCategories.isNotEmpty()) {
tagsBuilder.putList("favorite_categories", user.getFavoriteCategories())
}
// Définir les informations de paiement
tagsBuilder.putBoolean("is_subscribed", user.isSubscribed())
tagsBuilder.putString("payment_status", user.getPaymentStatus())
tagsBuilder.putString("billing_address", user.getBillingAddress())
// Construire et envoyer les tags
pushwoosh.setTags(tagsBuilder.build())
}
}

Événements

Anchor link to

Les événements sont des actions ou des occurrences spécifiques de l’utilisateur au sein de l’application qui peuvent être suivies pour analyser le comportement et déclencher des messages ou des actions correspondants.

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()
// Suivre l'événement d'achat
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)
// Définir les tags utilisateur
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

Le Rich Media fait référence au contenu interactif et multimédia, tel que des images, des vidéos ou du HTML, utilisé dans les notifications et les messages in-app pour améliorer l’engagement des utilisateurs.

Pour activer la fonctionnalité Modal Rich Media, vous devez la configurer dans le fichier AndroidManifest.xml de votre application en ajoutant l’entrée de métadonnées suivante :

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)
// Configurer le Rich Media modal
val config = ModalRichmediaConfig()
.setViewPosition(ModalRichMediaViewPosition.BOTTOM)
.setPresentAnimationType(ModalRichMediaPresentAnimationType.SLIDE_UP)
.setDismissAnimationType(ModalRichMediaDismissAnimationType.SLIDE_DOWN)
// Appliquer la configuration
RichMediaManager.setDefaultRichMediaConfig(config)
}
override fun shouldPresent(richMedia: RichMedia): Boolean {
Log.d("Pushwoosh", "Le Rich Media sera présenté avec : ${richMedia.content}")
return true
}
override fun onPresent(richMedia: RichMedia) {
Log.d("Pushwoosh", "Le Rich Media a été présenté : ${richMedia.content}")
}
override fun onClose(richMedia: RichMedia) {
Log.d("Pushwoosh", "Le Rich Media a été fermé : ${richMedia.content}")
}
override fun onError(richMedia: RichMedia, pushwooshException: PushwooshException) {
Log.e("Pushwoosh", "Échec de la présentation du Rich Media : ${richMedia.content}. Erreur : ${pushwooshException.message}")
}
}

Dépannage

Anchor link to

Si vous rencontrez des problèmes pendant le processus d’intégration, veuillez vous référer à la section support et communauté.