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 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 toPushManager 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 toBaseRegistrationReceiver é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 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 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 :
<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’Activité.
PushFragment
Anchor link toPushFragment é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 toPW_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 :
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 toIl 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 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 - 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 toVos 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.