我正在尝试将Geofire集成到Firebase Objective-C应用中,但我不确定如何设置Geofire节点来观察我的Firebase存储基础。以下是Geofire初创指南的建议:
“要创建新的GeoFire实例,您需要将其附加到Firebase数据库引用”
我的问题是:“将其附加到Firebase数据库引用”是什么意思?
在我的代码中,我希望Geofire能够观察Firebase的这个位置:
@"https://myApp.firebaseio.com/ios/languages"
以下是Firebase中“语言”节点的样子:
languages
--Arabic
----FakeUser1
------latitude: "38.8438"
------longitude: "-77.62432"
----FakeUser2
------latitude: "38.6438"
------longitude: "-77.32432"
--English
----FakeUser1
------latitude: "38.3438"
------longitude: "-77.92432"
----FakeUser2
------latitude: "38.2438"
------longitude: "-77.02432"
我想知道的是如何让Geofire观察和存储每个假用户的位置。每当我将用户读入/ languages / arabic或/ languages / english参考时,我是否会创建一个独特的Geofire节点并将用户读入其中?或者Geofire会观察预先存在的节点 - 即。将会有这样的伎俩:
Firebase *geofireRef = [[Firebase alloc] initWithUrl:@"https://myApp.firebaseio.com/ios/languages"];
GeoFire *geoFire = [[GeoFire alloc] initWithFirebaseRef:geofireRef];
答案 0 :(得分:2)
我明白了。您可以创建一个独特的Geofire节点,该节点可以反映您正在尝试监控的节点。
答案 1 :(得分:0)
我使用这种结构似乎运作良好。
app-id
-> geodata
--> geofire
---> key
----> g: <geohash>
-----> l:
-------> 0: Lat
-------> 1: Lon
--> other
---> key
----> <otherhash object>
保存数据时,您将使用以下方法单独保存地理位置数据:
mDatabase = FirebaseDatabase.getInstance().getReference("geodata");
geoFire = new GeoFire(mDatabase.child("geofire"));
geoFire.setLocation(people.key, new GeoLocation(people.Lat, people.Lon));
然后你会在firebase中单独保存你的数据:
mDatabase = FirebaseDatabase.getInstance().getReference("geodata");
mDatabase.child("other").child(people.key).setValue(people);
People
是我的自定义类对象,它将使用相同的密钥在firebase中序列化。
希望这会有所帮助。 :)