【发布时间】:2019-02-26 15:14:42
【问题描述】:
我正在使用 firebase 在我的应用上跟踪我的设备。当我的设备上的网络断开连接时,我想在 firebase 上通知。根据以下链接, https://firebase.google.com/docs/database/android/offline-capabilities 我正在使用以下代码:
#if __ANDROID__
FirebaseDatabase firebase = FirebaseDatabase.Instance;
FirebaseDatabase.Instance.SetPersistenceEnabled(true);
var userListRef = firebase.GetReference("USERS_ONLINE");
var myUserRef = userListRef.Push();
DatabaseReference connectedRef = firebase.GetReference(".info/connected");
connectedRef.AddValueEventListener(new ValueEventListener());
ValueEventListener 类:
internal class ValueEventListener : Java.Lang.Object, IValueEventListener
{
// public IntPtr Handle => throw new NotImplementedException();
public void Dispose()
{
throw new NotImplementedException();
}
public void OnCancelled(DatabaseError error)
{
throw new NotImplementedException();
}
public void OnDataChange(DataSnapshot snapshot)
{
FirebaseDatabase firebase = FirebaseDatabase.Instance;
DatabaseReference myConnectionsRef = firebase.GetReference("users/joe/connections");
bool connected = Convert.ToBoolean(snapshot.GetValue(true));
myConnectionsRef.KeepSynced(true);
if (connected)
{
DatabaseReference con = myConnectionsRef.Push();
con.OnDisconnect().RemoveValue();
myConnectionsRef.SetValue(Boolean.TrueString);
}
else
{
DatabaseReference con = myConnectionsRef.Push();
con.OnDisconnect().RemoveValue();
myConnectionsRef.SetValue(Boolean.FalseString);
}
}
}
但它仅在仅在线时才有效。谁能帮我解决这个问题。
【问题讨论】:
-
我认为你可以编辑你的代码参考你的链接的最后一个示例代码:firebase.google.com/docs/database/android/offline-capabilities
-
感谢里奥。我编辑了代码。它在安卓上运行良好。但它不适用于ios。 OnDisconnect 不适用于 ios。这是我的 ios 代码:“con.SetValueOnDisconnect();”
-
抱歉我对ios不太了解,你可以看看ios的doc:firebase.google.com/docs/database/ios/offline-capabilities
-
感谢您的帮助利奥。我找到了适用于 Android 和 iOS 的解决方案
标签: xamarin.forms