Xamarin Forms меняют метку, когда получают уведомление Firebase в то время как приложение открыто? - PullRequest
0 голосов
/ 13 января 2019

Привет, друзья, можно использовать широковещательный приемник в формах xamarin

в Android Studio (Java) Я использую вещательный приемник:

  1. Получение уведомления Firebase на переднем плане

  2. И меняйте обновление ярлыка каждый раз при получении уведомления.

его можно использовать в XF? или я должен сделать это для Android и IOS отдельно

У меня уже есть это представление с кодом C #

я положил этот подарок https://media.giphy.com/media/1mikDug30CysbMCGqA/giphy.gif

Я хочу, чтобы каждый раз, когда я получал уведомление, обновлял этикетку новыми данными уведомления:

txtUsuario.Text 

и выполнять другие функции, пока приложение открыто

CrossFirebasePushNotification.Current.OnNotificationReceived += async (s, p) =>
        {
            //EJECUTAR ESTE METODO [OnNotificationReceived] POR DEFECTO Y NO CUANDO HAGA CLICK EN EL EVENTO
            try
            {
                Console.Out.WriteLine("TOKEN CONSOLE : + p." + p.Data);
                notificationReceived = p.Data.ToString();
                object objetoRecivido = p.Data;
                var data = new
                {
                    codigo = 0,
                    nombreUsuario = ""
                };
                //https://github.com/CrossGeeks/FirebasePushNotificationPlugin/blob/master/docs/FirebaseNotifications.md
                var json = JsonConvert.SerializeObject(p.Data, Newtonsoft.Json.Formatting.Indented);
                myobject = new AOCAdvancedSettings();
                myobject = JsonConvert.DeserializeObject<AOCAdvancedSettings>(json);
                System.Diagnostics.Debug.WriteLine("Received");
                txtUsuario.Text = myobject.nombreUsuario;
                Device.BeginInvokeOnMainThread(() => {

                    txtUsuario.Text = (myobject != null) ? myobject.nombreUsuario : "usuario";

                });

1 Ответ

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

Похоже, вам нужно вызывать в потоке GUI из вашего события. Это должно работать в iOS и Android в вашем коде c #

Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
{
     // code to execute
});
...