如果没有创建Geofire,我如何检查Geofire是否将用户注销?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果没有创建Geofire,我如何检查Geofire是否将用户注销?相关的知识,希望对你有一定的参考价值。
问题摘要:我是Geofire的android Studio和Firebase新手,请保持温和。我的目标是在没有Geofire位置的情况下将用户登录到我的应用的地图屏幕上。我无法弄清楚如何在我的Geofire中查询“g”。如何查询“g”子项以查看它是否已创建?如果没有创建“g”,则需要注销。因此,目标是查询“g”并创建方法,如果“g”为空,则将用户注销。
我做过的事情:许多Stackoverflow帖子都没有使用Android Studio。我确实找到了这个I have inserted location using geofire in firebase,但它没有解决我的问题。我也试过Google firebase check if child exists
onLocationChanges是我添加在线供应商的地方,我也想检查是否创建了“g”。
@Override
public void onLocationChanged(Location location) {
// Adds VendorOnline Child to Firebase when Vendor is On This Activity
addVendorOnline();
// Log user out if they are on the map screen without a "VendorOnline" Uid
logVendorOutIfBuggy();
}
这是创建在线供应商并检查是否创建“g”的方法:
private void addVendorOnline(){
if (FirebaseAuth.getInstance().getCurrentUser() != null) {
String vendorId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference vendorIdReference = FirebaseDatabase.getInstance().getReference("VendorOnline");
GeoFire vendorGeoFire = new GeoFire(vendorIdReference);
vendorGeoFire.setLocation(vendorId, new GeoLocation(lastLocation.getLatitude(), lastLocation.getLongitude()));
}
}
// Log user out if for some reason they do not have a "g" child but are on the map screen.
private void logVendorOutIfBuggy() {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("g");
if(ref == null){
Toast.makeText(VendorMapsActivity.this, "Error", Toast.LENGTH_LONG).show();
FirebaseAuth.getInstance().signOut();
}
我期望发生什么以及实际发生了什么:如果“g”等于null,我希望用户注销,但是现在用户没有注销。
以下是调用getLocation
以查看供应商是否注册了位置的示例。
来自LocationCallback.onLocationResult
的javadocs:
使用密钥的当前位置调用此方法。如果密钥中没有存储在GeoFire中的位置,则location将为null。
final String vendorKey = "someVendorKey";
geoFire.getLocation(vendorKey, new LocationCallback() {
@Override
public void onLocationResult(String key, GeoLocation location) {
if (key.compareTo(vendorKey) == 0) {
if (location == null) {
// vendor has not logged a location yet (or it was removed)
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
以上是关于如果没有创建Geofire,我如何检查Geofire是否将用户注销?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用geofire查询检查10公里半径内是不是存在firebase用户
有没有办法将 GeoFire 与 Firestore 一起使用?