Comment ConnectionManager peut-il obtenir expiredRegistrationId capturé dans la classe AndroidPush?Comment câbler les événements déclenchés sur une solution référencée
Est-ce que je fais cela dans le mauvais sens?
Des suggestions sur la façon dont je peux améliorer ma solution?
Y a-t-il un motif que je pourrais suivre?
Solution: Les gestionnaires
public class ConnectionManger
{
private readonly IPushManager pushManager = new PushManager();
public void NotifyAppUser(List<PushNotificationSubscription> regIds, Alert alert)
{
pushManager.PushNotification(regIds, alert);
var expiredRegistrationId = ??
}
}
Solution: PushNotification
public class PushManager : IPushManager
{
public void PushNotification(List<PushNotificationSubscription> registeredPhone, Alert alert)
{
AndroidPush androidPush = new AndroidPush();
androidPush.Push(alert, registeredPhone);
}
}
public class AndroidPush : IPushNotificationStrategy
{
public void Push(Alert alert, List<string> registrationIds)
{
// Wait for GCM server
#region GCM Events
gcmBroker.OnNotificationFailed += (notification, aggregateEx) =>
{
var expiredRegistrationId = aggregateEx.OldId;
Q: How do i pass expiredRegistrationId to ConnectionManager class?
};
}
}
Annonce immobilière échoué à la classe ConnectionManager afin qu'il puisse être défini par le gestionnaire d'événements. – jdweng
Si j'ajoute une propriété ayant échoué à ConnectionManager, AndroidPush ne peut pas définir cette propriété car elle est référencée par ConnectionManager et provoque une référence circulaire. –
Vous devez utiliser une instance de la classe. – jdweng