使用Firebase的半径公共聊天室(需要建议)

Bha*_* P. 13 chat ios firebase

我想在我的应用程序中集成一个公共聊天室,但是我对如何创建后端毫无头绪.

我为我的应用程序使用firebase,两个用户或一组用户之间的设置很简单.我根据Firebase中的参考点创建了一个私人会议室,允许该群组中的用户访问这些消息.

现在假设我在洛杉矶,我希望用户能够与距其位置1英里半径范围内的其他用户聊天(lat/lng).我知道这可能是因为有一个应用程序可以在https://itunes.apple.com/sg/app/popcorn-messaging/id718416705?mt=8找到.

如果您想知道我尝试过的内容,请阅读以下内容.这可能有点令人困惑.

我想到这样做的一种方法是在世界范围内创建一个间距为一英里的聊天室.例如,从lat:0,lng:0开始,然后向右移动一英里,然后向右移动一英里等等.但是这样做弊大于利.我将有数百万个聊天室而不是全部使用过.

我认为可以实现的第二种方法是创建一个聊天室,如果它不存在于用户半径内.因此,如果我在洛杉矶,并且没有聊天室,它会在该位置创建一个,并且可以说如果另一个人去洛杉矶,因为已经在1英里的位置内创建了一个聊天室,它将为该用户加载聊天室.

任何建议将不胜感激.

Luk*_*gen 5

如果你确定你希望它是1英里乘1英里或任何类型的设定距离,我认为世界上预定的聊天室有一英里间距是更好的选择.就添加新用户而言,当人们移动位置时避免重叠,这将更加简单.如果你正在使用firebase,并且你正确地压平你的数据,那么你就不会因空荡荡的房间而过多地伤害自己.

我可能不会这样做的唯一原因是你担心聊天室会变得太满或太空.我不确定这是否是您的应用程序的问题,但这肯定是具有预定义位置的缺点.即使这样,您也可以根据房间中的人数使用预定义的位置并缩小(拆分房间)或按比例放大(合并房间).

希望这可以帮助.如果您正在寻找更多方向,您能告诉我们您的应用程序吗?

更新:我明白你在说什么.经过进一步思考,我仍然认为预定的区域是最好的方式.即使你自发地创造了新的区域,你仍然需要打破房间(画出房间之间的界限)和那条线两边的用户,即使它们彼此相邻,也会在不同的房间.

如果它只是基于纬度/经度和这些用户周围的半径,那么最终也会产生奇数结果.例如,如果用户B在具有用户A和C的房间中,但是用户A和C彼此相距太远,则他们可能会看到一些非常奇怪的聊天消息.例如,如果该半径为1英里,则User A可以是Mile 0,User B可以是Mile 1,也User C可以是Mile 2.所以User A(谁只能看到User AUser C)聊天可能如下所示:

User A: Hello there! What is 2+2?
User B: 4
User A: Thank you!
User B: George Washington
User A: What?!?!
Run Code Online (Sandbox Code Playgroud)

User B(谁是唯一会看到所有消息的人),它可能如下所示:

User A: Hello there! What is 2+2?
User B: 4
User A: Thank you!
User C: Who was the first president of the United States?
User B: George Washington
User C: Thank you!
User A: What?!?!
Run Code Online (Sandbox Code Playgroud)

User C(谁只能看到User BUser C)它看起来像这样:

User B: 4
User C: Who was the first president of the United States?
User B: George Washington
User C: Thank you!
Run Code Online (Sandbox Code Playgroud)

看起来这很快就会失控.毕竟,我认为我的原始建议仍然是最好的,但我认为所有这些建议都会有挑战.祝好运!