我的应用程序使用firebase,两个用户或一组用户之间的设置很简单.我根据Firebase中的参考点创建一个私人房间,允许该组中的用户访问消息.
现在让我说我在洛杉矶,我希望用户能够与距离他们的位置1英里半径的其他用户聊天(lat / lng).我知道它的可能性,因为有一个应用程序,这可以在https://itunes.apple.com/sg/app/popcorn-messaging/id718416705?mt=8找到.
只要你想知道我所尝试过的内容,请阅读以下内容.这可能有点混乱
我想到这样做的一个方法是在全世界建立一个英里间距的聊天室.例如,从lat开始:0,lng:0,然后向右移动一英里,等等,但是更好的损害.我将有数百万个聊天室,而不是全部使用.
第二种方式,我认为我可以实现的是创建聊天室,如果它不存在于用户半径内.所以如果我在洛杉矶,而且没有聊天室,那么它会在那个位置创建一个,并且说如果另一个人去洛杉矶,因为在1英里的位置已经建立了一个聊天室,它将加载该用户的聊天室.
任何建议将不胜感激.
解决方法
我可能不这样做的唯一原因是,如果您担心聊天室变得太满或太空.我不知道这是否是您的应用程序的关注,但这肯定会是预定义位置的缺点.即使这样,您可以根据房间中有多少人使用预定义的位置并缩小(拆分房间)或扩大(合并房间).
希望这可以帮助.如果您正在寻找更多的方向,可以再多告诉我们您的申请?
更新:我看到你在说什么经过进一步的思考,我仍然认为预先确定的领域是最好的方式.即使您自发创建新的区域,仍然会有一点需要拆分房间(绘制房间之间的边界)和该行两边的用户,即使它们彼此相邻,也将是在不同的房间.
如果它只是基于lat / lng和围绕这些用户的半径,那么也可能会产生奇怪的结果.例如,如果用户B位于具有用户A和C的房间中,但是用户A和C彼此之间的距离太远,则可能会看到一些非常奇怪的聊天消息.例如,如果该半径为1英里,则用户A可能处于Mile 0,用户B可能处于Mile 1,用户C可能处于Mile 2.所以对于用户A(谁只能看到用户A和用户C) “聊天可能看起来像这样:
User A: Hello there! What is 2+2? User B: 4 User A: Thank you! User B: George Washington User A: What?!?!
对于用户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?!?!
User B: 4 User C: Who was the first president of the United States? User B: George Washington User C: Thank you!
似乎这样可能很快就会失控.毕竟,我认为我原来的建议仍然是最好的,但我认为他们都会有挑战.祝你好运!