Loupe

[Xamarin] Comment être notifié lors de la mise au premier plan d’une application ?

Lorsqu’une application repasse au premier plan, c’est souvent le bon moment de lui faire rafraichir ses données. En effet, les systèmes actuels (Windows Phone, iOS et Android) permettent aux applications de continuer à s’exécuter en arrière-plan, mais en consommant un minimum de ressources. Si l’on peut utiliser des tâches d’arrière-plan ou autre mécanisme, un petit rafraichissement forcé des données ne peut pas faire de mal, pour permettre à l’utilisateur de disposer des données les plus récentes.

Sur Windows Phone, c’est relativement simple car il suffit de s’abonner à l’évènement Resuming de l’objet Application:

public App()
{
    InitializeComponent();
 
    Resuming += OnResuming;
}

private async void OnResuming(object sender, object e)
{
    // TODO
}

Sur Android, le système est assez similaire. En effet, chaque activité peut surcharger la méthode OnResume qui est appelé à chaque fois que l’application repasse au premier plan:

protected override async void OnResume()
{
    base.OnResume();

    // TODO
}

Cependant, côté iOS, c’est un peu plus compliqué, mais pas tant que ça en y regardant bien. En effet, il faut commencer par s’abonner à la réception de la notification de mise au premier plan, en ajoutant un observer sur le centre de notification de l’application:

public async override void ViewDidLoad()
{
    base.ViewDidLoad();

    this._observer = NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.WillEnterForegroundNotification, EnteredForeground);
}

La méthode EnteredForeground sera ainsi appelée lorsque l’utilisateur fera repasser l’application au premier plan:

private async void EnteredForeground(NSNotification notification)
{
    // TODO
}

Il faut également penser à se désabonner de la réception de la notification de mise au premier plan:

public override void ViewDidUnload ()
{
    if (this._observer != null) 
    {
        NSNotificationCenter.DefaultCenter.RemoveObserver (this._observer);
    }

    base.ViewDidUnload ();
}

 

Et voilà, vous êtes maintenant en mesure de savoir quand l’utilisateur réutilise votre application après que celle-ci ait été mise en arrière-plan!

 

Happy coding!

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus