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 de Pushwoosh sont devenues obsolètes 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 comprenait 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 récepteur est maintenant remplacé par un mécanisme de rappel simple :

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 rappel onMessageReceive. C’é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 récepteur 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’Activité.

PushFragment

Anchor link to

PushFragment était une alternative légère à l’intégration complexe impliquant le cycle de vie de l’Activité. Mais d’un autre côté, il nécessitait l’héritage de FragmentActivity et utilisait implicitement le cycle de vie plus complexe du Fragment. PushFragment et PushEventListener sont maintenant remplacés par Pushwoosh#registerForPushNotifications(Callback) et NotificationServiceExtension.

Récepteur de diffusion push personnalisé (PW_NOTIFICATION_RECEIVER)

Anchor link to

PW_NOTIFICATION_RECEIVER était utilisé pour personnaliser le comportement lorsque l’utilisateur clique sur une notification. Cela permettait de gérer les notifications en dehors du contexte de l’Activité et d’ouvrir différentes Activités en fonction du contenu de la notification. Cette intégration utilisait l’API interne du SDK Pushwoosh qui n’existe plus. Ce récepteur 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'Activité
launchIntent.putExtra(Pushwoosh.PUSH_RECEIVE_EVENT, message.toJson().toString());
context.startActivity(launchIntent);
}
}

Fabrique de notifications

Anchor link to

Il y a également eu quelques changements majeurs concernant la fabrique de notifications :

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 - renvoie le hwid de Pushwoosh pour l’appareil actuel. getVersion(): string - renvoie 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) - renvoie les tags associés à l’appareil actuel. closeInApp() - ferme la page HTML In-App.

Partagez vos commentaires avec nous

Anchor link to

Vos commentaires nous aident à créer une meilleure expérience, nous serions donc ravis de vous entendre 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 réflexions via ce formulaire.