none
Intercepter des notifications push et bonnes pratiques de mise à jour de contenu RRS feed

  • Question

  • Bonjour à toutes et tous,

    Je suis en train de me former sur le développement Windows 10 en vue de commencer à développer. Je souhaiterais pouvoir intercepter des notifications push lorsque mon application est démarrée, mais surtout également lorsqu'elle ne l'est pas. Je n'ai pas de soucis lorsqu'elle l'est, grâce à l'évènement PushNotificationReceived, mais bien sûr cela ne fonctionne pas lorsqu'elle est arrêtée.

    Je ne trouve rien sur le forum ni nul part ailleurs.

    Aussi, je suis preneur de conseils sur les bonnes pratiques concernant les requêtes HTTP. Cas d'usage : notifications push informe que du nouveau contenu est disponible sur mon serveur distant.

    Je vois dans ce cas deux possibilités :

    - Télécharger le contenu via une BackgroundTask à la réception de la notification et le stocker dans la base de données de l'application (mais est-ce possible lorsque l'application n'est pas démarrée ? et est-il possible d'accéder au payload de la notification ?)

    - Télécharger le contenu au prochain démarrage de l'appli en informant l'utilisateur que des mises à jour sont en cours, sans pour autant l'empêcher de naviguer dans l'application. Mais cette solution me semble moins intéressante au niveau UX.

    Par avance merci pour votre aide et vos conseils

    LIOULT Samuel



    mercredi 4 novembre 2015 11:00

Réponses

Toutes les réponses

  • Petite précision :

    Lorsque mon application n'est pas démarrée, même dans le cas d'une notification de type Raw, je ne sais pas comment avoir accès au payload...

    Merci de votre aide...

    mercredi 4 novembre 2015 14:12
  • Bonjour,

    Je n'ai pas testé encore, mais avez-vous regardez du coté des BackgroundTask avec notamment le PushNotificationTrigger (bien qu'il y ai des conditions apriori) : https://msdn.microsoft.com/fr-fr/library/windows/apps/mt227652.aspx

    Cordialement,


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    jeudi 5 novembre 2015 08:12
  • Bonjour Yan,

    Merci pour votre aide. J'ai déjà essayé avec une BackgroundTask, je suis parvenu à la démarrer sur réception d'une notification Push de type Raw, mais je n'ai pas accès au payload de la notification, ou en tout cas je n'ai pas trouvé comment faire pour y avoir accès.

    Merci

    jeudi 5 novembre 2015 09:27
  • Bonjour,

    J'ai vu que dans le taskInstance qui arrive dans le Run il y a une propriété TriggerDetails. Peut être que je peux accéder au payload par ici. Cependant, je n'arrive plus à trigger la réception de notification push.

    Mon code :

    J'utilise un helper appelé dans le OnStartAsync du App.xaml.cs

    await BackgroundHelper.Register<MyTask>(new PushNotificationTrigger());
    public async static Task<BackgroundTaskRegistration> Register<T>(IBackgroundTrigger trigger, ICollection<IBackgroundCondition> conditions = null) where T : class
            {
                await BackgroundExecutionManager.RequestAccessAsync();
                var allowed = BackgroundExecutionManager.GetAccessStatus();
                switch (allowed)
                {
                    case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity:
                    case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity:
                        break;
                    case BackgroundAccessStatus.Unspecified:
                    case BackgroundAccessStatus.Denied:
                        return null;
                }
    
                var existing = FindRegistration<T>();
                if (existing != null)
                {
                    existing.Unregister(false);
                }
    
                var task = new BackgroundTaskBuilder
                {
                    Name = nameof(MyTask),
                    CancelOnConditionLoss = false,
                    TaskEntryPoint = typeof(T).ToString()
                };
    
                task.SetTrigger(trigger);
    
                if (conditions != null)
                {
                    foreach (var condition in conditions)
                        task.AddCondition(condition);
                }
    
                return task.Register();
            }
    Par avance merci

    jeudi 5 novembre 2015 10:41
  • Ha !

    Je n'ai pas encore testé ces fonctionnalités je n'en sais pas plus sur comment on peut résoudre a priori dans RawNotification (https://msdn.microsoft.com/fr-fr/library/windows/apps/windows.networking.pushnotifications.rawnotification.aspx) il parle de TriggerDetail.

    Lire peut-être cet article pour plus d'informations : https://msdn.microsoft.com/fr-fr/library/windows/apps/mt187200.aspx.

    Cordialement,


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    • Marqué comme réponse Samuel LIOULT jeudi 5 novembre 2015 14:32
    jeudi 5 novembre 2015 10:56
  • C'est ok pour moi. J'ai refait un projet propre et j'ai réussi à le mettre en place en utilisant une BackgroundTask et donc le fameux TriggerDetails.

    Merci beaucoup pour votre aide !

    Samuel

    jeudi 5 novembre 2015 14:32