IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Mobile .NET Discussion :

Chargement avant d'afficher la MainPage.xaml


Sujet :

Développement Mobile .NET

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut Chargement avant d'afficher la MainPage.xaml


    Je suis actuellement confronté à un problème, il faudrait que lors du chargement des données (via webservices pour le premier chargement puis Json pour les autres chargement si pas de màj de données) que la MainPage.xaml ne se charge pas.

    Je souhaiterais faire de la sorte car je vérifie au lancement de l'application si elle a été mise à jour ou non en testant la version de l'assembly et la version que je stock en base de données.

    J'ai tout le code de chargement des données dans le fichier App.xaml.cs or, celui-ci arrive t-il à peine au chargement de la configuration que la suite du chargement de l'appli continue en allant directement vers MainPage.xaml.cs dans laquelle je suis censé tester la version du programme et bloquer si l'application n'est pas à jour.

    Cela pose bien entendu des problème vu qu'aucune donnée à ce moment là n'est chargée !

    Partie de App.xaml.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    protected override async void OnStart()
    {
        // Handle when your app starts
        HttpClient Client = new HttpClient();
        GestFiles f = new GestFiles();
        string LastUpdate = "";
        string Dte = "";
     
        /* Recherche de la dernière date de mise à jour des données Json */
        if (f.FileExists(Constants.LAST_UPDATE))
        {
            LastUpdate = f.LoadText(Constants.LAST_UPDATE);
            first = false;
        }
        else
            first = true;
     
        /* Chargement de la table de configuration.
            * S'il n'y a pas de réseau mais qu'un fichier de configuration existe en local, on le charge.
            * Sinon on se connecte au réseau et on télécharge la configuration en ligne pour déterminer
            * s'il y a eu une modification des listes et du catalogue.
            */
        if ((Connectivity.NetworkAccess == NetworkAccess.None || Connectivity.NetworkAccess == NetworkAccess.Unknown) && f.FileExists(Constants.CONFIG_FILE))
        {
            var rootObject = JsonConvert.DeserializeObject<List<Config>>(f.LoadText(Constants.CONFIG_FILE));
            PackQSE_Configuration = rootObject;
        }
        else
        {
            try
            {
                var contenu = await Client.GetStringAsync(Constants.GET_UrlConfig);
                var rootObject = JsonConvert.DeserializeObject<List<Config>>(contenu);
     
                PackQSE_Configuration = rootObject;
                f.SaveText(Constants.CONFIG_FILE, contenu);
    Partie de MainPage.xaml.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    protected override async void OnAppearing()
    {
        base.OnAppearing();
     
        ImageError.IsVisible = false;
     
        if ((Connectivity.NetworkAccess == NetworkAccess.None || Connectivity.NetworkAccess == NetworkAccess.Unknown) && App.first)
        {
            await DisplayAlert(
                "Erreur réseau...",
                "Aucune connexion n'a été détectée.\n\nL'application doit avoir un accès au réseau SDEA pour son premier lancement !",
                "Ok");
     
            btnCommandesEPI.IsEnabled = false;
            btnDeclaration.IsEnabled = false;
        }
        else
        {
            VersionTracking.Track();
     
            if (App.PackQSE_Configuration.Find(x => x.nom_parametre == "VERSION_APPLI").valeur_parametre != VersionTracking.CurrentVersion)
            {
                await DisplayAlert(
                    "Mise à jour nécesaire...",
                    "L'application a détectée une mise à jour\n\nVeuillez mettre à jour l'application avant de continuer !",
                    "Ok");
     
                btnCommandesEPI.IsEnabled = false;
                btnDeclaration.IsEnabled = false;
            }
            else
            {
                btnCommandesEPI.IsVisible = true;
                btnDeclaration.IsVisible = true;
            }
        }
    }
    Si quelqu'un a une solution ...




    [EDIT]
    J'ai essayé avec l'appel à ConfigureAwait(false) dans l'appel à var contenu = await Client.GetStringAsync(Constants.GET_UrlConfig) mais cela n'a pas eu l'effet escompté.
    [/EDIT]
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Pourquoi ne pas crée une fenêtre dont ça serait le rôle, au lieu que l'app.xaml te redirige sur la mainpage, il te redirige sur une page CheckVersion.xaml par exemple qui affichera une petite fenêtre de chargement aux utilisateurs et si c'est bon affiche la mainpage sinon affiche un message à l'utilisateur pour lui dire de mettre à jour l'appli.

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Heu oui c'est une très bonne idée, je vais travailler là-dessus, ça me plaît assez !

    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/08/2007, 17h23
  2. Réponses: 5
    Dernier message: 13/07/2007, 16h13
  3. [Sécurité] Test avant d'afficher un forum
    Par philippef dans le forum Langage
    Réponses: 5
    Dernier message: 01/12/2006, 13h41
  4. Réponses: 2
    Dernier message: 19/08/2006, 11h46
  5. [C#]Fenetre de chargement avant Application.run()
    Par 5:35pm dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2006, 04h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo