Passer au contenu

Guide de migration

Migration du SDK Android 5 vers 6

Anchor link to
  1. Migrez votre projet vers AndroidX conformément à la documentation officielle.
  2. Ajoutez un nouveau module dans le fichier build.gradle de l’application si vous utilisez Firebase Cloud Messaging.
build.gradle
implementation 'com.pushwoosh:pushwoosh-firebase:+'

Pour ceux qui utilisent Amazon et n’utilisent pas Firebase, aucun changement n’est nécessaire.

Migration depuis les versions précédentes du SDK Android

Anchor link to

La plupart des classes et méthodes Pushwoosh sont devenues dépréciées depuis la version 5.0 et certaines ont été supprimées. Les classes PushManager, BasePushMessageReceiver, BaseRegistrationReceiver, SendPushTagsCallback, PushFragment et PushEventListener sont toujours disponibles dans la bibliothèque com.pushwoosh:pushwoosh-deprecated, mais il est recommandé de migrer vers la nouvelle API dès que possible.

PushManager

Anchor link to

PushManager regroupait diverses méthodes pour différentes fonctionnalités. Ces méthodes sont maintenant réparties entre différentes classes et bibliothèques : com.pushwoosh:pushwoosh : Pushwoosh, PushwooshNotificationSettings, PushwooshInApp. com.pushwoosh:pushwoosh-badge : PushwooshBadge. com.pushwoosh:pushwoosh-location : PushwooshLocation. com.pushwoosh:pushwoosh-beacon : PushwooshBeacon.

BaseRegistrationReceiver

Anchor link to

BaseRegistrationReceiver était utilisé pour gérer les événements d’enregistrement et de désenregistrement des notifications push. Ce receiver est maintenant remplacé par un simple mécanisme de callback :

Pushwoosh.getInstance().registerForPushNotifications(result -> {
if (result.isSuccess()) {
String token = result.getData();
// gérer l'enregistrement réussi
}
else {
PushwooshException exception = result.getException();
// gérer l'erreur d'enregistrement
}
});

BasePushMessageReceiver

Anchor link to

BasePushMessageReceiver était utilisé pour imiter le comportement des notifications iOS lors de la réception d’une notification push au premier plan. Cela était réalisé en annulant la notification entrante et en invoquant le callback onMessageReceive. Ce mécanisme était peu pratique et nécessitait un enregistrement manuel lorsque l’application devenait active et un désenregistrement lorsqu’elle passait en arrière-plan. Ce receiver a été remplacé par NotificationServiceExtension :

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.notification_service_extension"
android:value="com.your.package.name.YourNotificationServiceExtension"/>
YourNotificationServiceExtension.java
public class YourNotificationServiceExtension extends NotificationServiceExtension {
@Override
public boolean onMessageReceived(final PushMessage message) {
if (isAppOnForeground()) {
Handler mainHandler = new Handler(getApplicationContext().getMainLooper());
mainHandler.post(() -> {
handlePush(message);
});
// ceci indique que la notification ne doit pas être affichée
return true;
}
return false;
}
@Override
protected void startActivityForPushMessage(PushMessage message) {
super.startActivityForPushMessage(message);
handlePush(message);
}
@MainThread
private void handlePush(PushMessage message) {
// TODO : gérer le message push
}
}

Cette extension est également utilisée pour gérer les événements d’arrivée et d’acceptation des notifications, remplaçant ainsi tout le code peu pratique qui était utilisé dans l’intégration manuelle de l’Activity.

PushFragment

Anchor link to

PushFragment était une alternative légère à l’intégration complexe impliquant le cycle de vie de l’Activity. Cependant, il nécessitait l’héritage de FragmentActivity et utilisait implicitement le cycle de vie plus complexe des Fragments. PushFragment et PushEventListener sont maintenant remplacés par Pushwoosh#registerForPushNotifications(Callback) et NotificationServiceExtension.

Custom Push Broadcast Receiver (PW_NOTIFICATION_RECEIVER)

Anchor link to

PW_NOTIFICATION_RECEIVER était utilisé pour personnaliser le comportement lorsque l’utilisateur cliquait sur une notification. Cela permettait de gérer les notifications en dehors du contexte de l’Activity et d’ouvrir différentes Activities en fonction du contenu de la notification. Cette intégration utilisait l’API interne du SDK Pushwoosh qui n’existe plus. Ce receiver est maintenant complètement remplacé par NotificationServiceExtension :

YourNotificationServiceExtension.java
public class YourNotificationServiceExtension extends NotificationServiceExtension {
@Override
protected void startActivityForPushMessage(PushMessage message) {
// super.startActivityForPushMessage() démarre l'activité de lancement par défaut
// ou l'activité marquée avec l'action ${applicationId}.MESSAGE.
// Ne l'appelez tout simplement pas pour surcharger ce comportement.
// super.startActivityForPushMessage(message);
// démarrez votre activité à la place :
Intent launchIntent = new Intent(getApplicationContext(), YourActivity.class);
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// (Optionnel) passer les données de notification à l'Activity
launchIntent.putExtra(Pushwoosh.PUSH_RECEIVE_EVENT, message.toJson().toString());
context.startActivity(launchIntent);
}
}

Notification Factory

Anchor link to

Il y a également eu quelques changements non rétrocompatibles concernant la notification factory :

1. AbsNotificationFactory a été remplacé par NotificationFactory 2. Les méthodes AbsNotificationFactory#onPushReceived(PushData) et AbsNotificationFactory#onPushHandle(Activity) ont été remplacées par la classe NotificationServiceExtension (onMessageReceived, startActivityForPushMessage). 3. DefaultNotificationFactory a été remplacé par PushwooshNotificationFactory. 4. PushData a été remplacé par PushMessage.

Messages In-App

Anchor link to

1. InAppFacade a été remplacé par PushwooshInApp. 2. L’objet pushwoosh a été introduit pour l’interface native JavaScript avec l’API suivante : getHwid(): string - retourne le HWID Pushwoosh pour l’appareil actuel. getVersion(): string - retourne la version actuelle du SDK Pushwoosh. postEvent(event: string, attributes?: object, successCallback?: function, errorCallback?: function) - envoie une requête postEvent. sendTags(tags: object) - envoie les tags associés à l’appareil actuel. getTags(successCallback: function, errorCallback?: function) - retourne les tags associés à l’appareil actuel. closeInApp() - ferme la page HTML In-App.

Partagez vos retours avec nous

Anchor link to

Vos retours nous aident à créer une meilleure expérience, nous serions donc ravis d’avoir votre avis si vous rencontrez des problèmes lors du processus d’intégration du SDK. Si vous rencontrez des difficultés, n’hésitez pas à nous faire part de vos commentaires via ce formulaire.