Guide de migration
Migration du SDK Android 5 vers 6
Anchor link to- Migrez votre projet vers AndroidX conformément à la documentation officielle.
- Ajoutez un nouveau module dans le fichier build.gradle de l’application si vous utilisez Firebase Cloud Messaging.
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 toLa 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 toPushManager 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 toBaseRegistrationReceiver é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 toBasePushMessageReceiver é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 :
<meta-data android:name="com.pushwoosh.notification_service_extension" android:value="com.your.package.name.YourNotificationServiceExtension"/>
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 toPushFragment é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 toPW_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 :
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 toIl 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 to1. 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 toVos 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.