Migration vers le SDK Android v.5.x.x sur Xamarin
PushManager
Anchor link toPushManager comprenait diverses méthodes pour différentes fonctionnalités. Ces méthodes sont désormais réparties entre différentes classes :
- PushNotificationsManager
- PushwooshNotificationSettings
- PushwooshInApp
- PushwooshBadge
- PushwooshLocation
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 (callback) :
using Pushwoosh;using Pushwoosh.Exception;using Android.Runtime;using Pushwoosh.Function;
class RegistrationListener : Java.Lang.Object, ICallback{ public void Process(Result result) { if (result.IsSuccess) { string token = (string)result.Data; // gérer l'enregistrement réussi } else { PushwooshException exception = result.Exception.JavaCast<PushwooshException>(); // gérer l'erreur d'enregistrement } }}
PushNotificationsManager.Instance.RegisterForPushNotifications(new RegistrationListener());
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 se faisait en annulant la notification entrante et en invoquant le rappel (callback) OnMessageReceive. Une telle solution de contournement nécessitait un enregistrement manuel lorsque l’application devenait active, et un désenregistrement lorsque l’application passait en arrière-plan.
Ce récepteur a été remplacé par NotificationServiceExtension :
using Android.App;using Android.OS;using Android.Runtime;using Android.Support.Annotation;using Pushwoosh.Notification;
[assembly: MetaData("com.pushwoosh.notification_service_extension", Value = "com.your.package.YourNotificationServiceExtension")]namespace YourNamespace{ [Register("com/your/package/YourNotificationServiceExtension")] public class YourNotificationServiceExtension : NotificationServiceExtension { protected override bool OnMessageReceived(PushMessage message) { if (IsAppOnForeground) { Handler mainHandler = new Handler(ApplicationContext.MainLooper); mainHandler.Post(() => { HandlePush(message); }); return true; } return false; }
protected override void StartActivityForPushMessage(PushMessage message) { base.StartActivityForPushMessage(message); HandlePush(message); }
[MainThread] 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 de clic sur les notifications, remplaçant ainsi tout le code fastidieux 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é. 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 de push personnalisé (PW_NOTIFICATION_RECEIVER)
Anchor link toPW_NOTIFICATION_RECEIVER était utilisé pour personnaliser le comportement de l’application lorsque l’utilisateur cliquait sur la 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. Une telle intégration utilisait l’API interne du SDK Pushwoosh qui n’existe plus.
Ce récepteur est maintenant complètement remplacé par NotificationServiceExtension :
using System;using Android.App;using Android.Content;using Android.Runtime;using Pushwoosh.Notification;
[assembly: MetaData("com.pushwoosh.notification_service_extension", Value = "com.your.package.YourNotificationServiceExtension")]namespace YourNamespace{ [Register("com/your/package/YourNotificationServiceExtension")] public class YourNotificationServiceExtension : NotificationServiceExtension { protected override void StartActivityForPushMessage(PushMessage message) { // base.StartActivityForPushMessage(message) lance l'activité de lancement par défaut // ou l'activité marquée avec l'action ${applicationId}.MESSAGE. // Ne l'appelez tout simplement pas pour remplacer ce comportement.
// démarrez votre activité à la place : Intent launchIntent = new Intent(ApplicationContext, typeof(YourActivity)); launchIntent.SetFlags(ActivityFlags.NewTask);
ApplicationContext.StartActivity(launchIntent); } }}
Notification Factory
Anchor link toIl y a également eu quelques changements majeurs (“breaking changes”) concernant la fabrique de notifications :
1. AbsNotificationFactory a été remplacé par NotificationFactory
2. Les méthodes AbsNotificationFactory#onPushReceived(PushData) et AbsNotificationFactory#onPushHandle(Activity) sont 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 Pushwoosh de l’appareil.
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.
getTags(successCallback: function, errorCallback?: function) - renvoie les tags associés à l’appareil.
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 connaître votre avis si vous rencontrez des problèmes lors du processus d’intégration du SDK. Si vous faites face à des difficultés, n’hésitez pas à nous faire part de vos réflexions via ce formulaire.