обновлять данные внутри приложения каждый раз, когда я получаю уведомление, когда приложение открыто xamarin формы C # код пользовательского интерфейса? - PullRequest
0 голосов
/ 15 января 2019

Привет, я использую puglin FirebasePushNotification . И у меня есть мой взгляд с кодом C # и рабочей ширины xamarin формы

CrossFirebasePushNotification.Current.OnNotificationReceived += (s, p) =>
{
    //EJECUTAR ESTE METODO [OnNotificationReceived] POR DEFECTO Y NO CUANDO HAGA CLICK EN EL EVENTO
    try
    {
        System.Diagnostics.Debug.WriteLine("Enter OnNotificationReceived");
        var json = JsonConvert.SerializeObject(p.Data, Newtonsoft.Json.Formatting.Indented);
        FirebasePushNotificactionData myobject;
        myobject = new FirebasePushNotificactionData();
        myobject = JsonConvert.DeserializeObject<FirebasePushNotificactionData>(json);
        txtUsuario.Text = myobject.nombreUsuario;
        //obtenerDatosDelServicioZonasTrabajoAsync(myobject.codigo);
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine("error: " + ex.Message);
    }
};

и ошибка напр. Сообщение равно

Только исходный поток, создавший иерархию представлений, может касаться его просмотры

метка (txtUsuario.Text) обновляется с правильными данными уведомления в первый раз, и эта ошибка также отображается только в первый раз.

всегда входите в OnNotificationReceived. Это хорошо, но только в первый раз обновляйте этикетку.

1 Ответ

0 голосов
/ 15 января 2019

Вы пытаетесь обновить пользовательский интерфейс в другом потоке. Вы можете вызвать этот метод для обновления в потоке пользовательского интерфейса.

Device.BeginInvokeOnMainThread(() =>
{
    txtUsuario.Text = myobject.nombreUsuario;
});
...