Passer au contenu

Migration vers le SDK Android v.5.x.x sur Xamarin

PushManager

Anchor link to

PushManager 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 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 (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 to

BasePushMessageReceiver é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 to

PushFragment é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 to

PW_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 to

Il 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 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 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 to

Vos 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.