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 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
  • Naviguez vers Tools > Firebase > Cloud Messaging et cliquez sur « Set up Firebase Cloud Messaging »
  • Suivez les instructions de l’assistant. À 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 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. Exécuter le projet

Anchor link to
  1. Compilez et exécutez 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 (ouvre) la notification.

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 de l’utilisateur

Anchor link to

En vous concentrant sur le comportement et les préférences individuels des utilisateurs, 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()
// 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)
}
}
}
}

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 permet un envoi de messages ciblé.

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

É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()
// 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

Anchor link to

Le Rich Media fait référence à du 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 de l’utilisateur.

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

Dépannage

Anchor link to

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