首页 > 解决方案 > Xamarin Forms 在应用打开时收到 Firebase 通知时更改标签?

问题描述

嗨,朋友们可以在 xamarin 表单中使用广播接收器

在 Android Studio(Java) 中,我使用广播接收器:

  1. 在前台接收 Firebase 通知

  2. 并在每次收到通知时更改标签的更新。

它可以在 XF 中使用吗?或者我应该分别为Android和IOS做

我已经使用 c# 代码获得了该视图

我把这个 gif 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";

                });

标签: c#androidxamarin.formspush-notificationfirebase-cloud-messaging

解决方案


听起来您需要从事件中调用 GUI 线程。这应该可以在您的 c# 代码中的 iOS 和 Android 中使用

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

推荐阅读