如何从 Xamarin 中的 Firebase 获取价值?

Posted

技术标签:

【中文标题】如何从 Xamarin 中的 Firebase 获取价值?【英文标题】:How to Get Value from Firebase in Xamarin? 【发布时间】:2017-09-15 23:25:06 【问题描述】:

如何使用 Xamarin Firebase.Database android 从 Firebase 实时数据库获取数据,因为没有可用的文档并且我是新用户。

public void GetSubjects()

   Database.Reference.Child("childName").Ref.AddListenerForSingleValueEvent(new ValueEventListener());


public class ValueEventListener : Java.Lang.Object, Firebase.Database.IValueEventListener


    public void OnCancelled( DatabaseError error )
    
       throw new NotImplementedException();
    

    public void OnDataChange( DataSnapshot snapshot )
    

      //How to Get Value from Snapshot?
      ClassName a = snapshot.GetValue(ClassName) //Gives Error

    

【问题讨论】:

你可以检查这个:Remote Notifications with Firebase Cloud Messaging. 我需要使用 Firebase 数据库,它有不同的 api 集。 【参考方案1】:

看看这个,看看它是否有效......

private void GetData()

    FirebaseDatabase
        .Instance
        .Reference
        .Child("Put your child node name here")
        .AddListenerForSingleValueEvent(new DataValueEventListener());



class DataValueEventListener: Java.Lang.Object, IValueEventListener

    public void OnCancelled(DatabaseError error)
    
        // Handle error however you have to
    

    public void OnDataChange(DataSnapshot snapshot)
    
        if (snapshot.Exists())
        
            DataModelClass model = new DataModelClass();
            var obj = snapshot.Children;

            foreach (DataSnapshot snapshotChild in obj.ToEnumerable())
            
                if (snapshotChild.GetValue(true) == null) continue;

                model.PropertyName = snapshotChild.Child("Put your firebase attribute name here")?.GetValue(true)?.ToString();
                model.PropertyName = snapshotChild.Child("Put your firebase attribute name here")?.GetValue(true)?.ToString();

                // Use type conversions as required. I have used string properties only
            
        
    

【讨论】:

【参考方案2】:

也许你可以试试这个

internal class DAOFood

    FirebaseClient firebase = new FirebaseClient("YOUR FIREBASE URL");
    public DAOFood()
    
    

    public async Task<List<Food>> GetAllFoods()
    
        List<Food> lstFood = (await firebase.
            Child("Food").
            OnceAsync<Food>()).Select(item => new Food
            
                FoodId = item.Object.FoodId,
                FoodName = item.Object.FoodName
            ).ToList();
        return lstFood;
    

【讨论】:

你能edit你的问题解释一下你做了什么改变以及如何解决这个问题吗?

以上是关于如何从 Xamarin 中的 Firebase 获取价值?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Firebase 消息传递到 Xamarin.Android 应用程序?

如何从孩子的 Firebase 获取数据?

如何在 Xamarin 的 firebase 中更新用户显示名称?

通过 FireBase 触发从 ASP.Net Api 到 Xamarin.Android 应用程序的推送通知

如何使用 Firebase 在 Xamarin 中实现推送通知和使用 C# 后端的 Apple 推送通知

如何在 Xamarin.iOS 中使用 FCM(Firebase 云消息传递)发送 iOS 推送通知