3

我正在尝试将 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];
4

2 回答 2

2

我想到了。您创建了一个独特的 Geofire 节点,该节点反映了您尝试监控的节点。

于 2016-01-25T22:09:13.823 回答
0

我使用这种结构,它似乎运作良好。

app-id
-> geodata
--> geofire
---> key
----> g: <geohash>
-----> l: 
-------> 0: Lat
-------> 1: Lon

--> other
---> key
----> <otherhash object>

保存数据时,您将使用以下方法单独保存 geofire 数据:

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 中使用相同的键进行序列化。

希望这可以帮助。:)

于 2017-08-28T00:23:52.437 回答