Firebase iOS SDK - 计算连接用户

Posted

技术标签:

【中文标题】Firebase iOS SDK - 计算连接用户【英文标题】:Firebase iOS SDK - Count connected users 【发布时间】:2015-09-16 15:34:50 【问题描述】:

我正在使用 Firebase ios SDK 构建一个聊天系统,让我的用户可以连接到一些可以一起聊天的随机“房间”。在房间内,我想向他们显示当前连接的总人数。问题是我不知道如何计算。连接的用户数量应在特定用户的连接和断开连接时更新。我不知道从哪里开始,该做什么。

【问题讨论】:

您需要提供更多上下文,说明您的代码的结构方式以及需要在其中出现计数的位置,以及有关控制连接和断开连接的代码的详细信息。对于这个论坛来说,这个问题可能太宽泛了。 【参考方案1】:

这很简单:)

每当用户验证/加入房间时,将其保存到活动用户列表中。

斯威夫特

let ref = Firebase(url: "<your-firebase-db>")
ref.observeAuthEventWithBlock  authData in
  if authData != nil 
    // 1 - Get the ref
    let activeUsersRef = Firebase(url: '<your-firebase-db>/activeUsers')
    // 2 - Create a unique ref
    let singleUserRef = activeUsersRef.childByAutoId()
    // 3 - Add them to the list of online users
    singleUserRef.setValue(authData.providerData["email"])
    // 4 - When they drop their connection, remove them
    singleUserRef.onDisconnectRemoveValue()
  

Objective-C

Firebase *ref = [[Firebase alloc] initWithUrl: @"<your-firebase-db>"];
[ref observeAuthEventWithBlock: ^(FAuthData *authData) 
  Firebase *activeUsersRef = [[Firebase alloc] initWithUrl: @"<your-firebase-db>/activeUsers"];
  Firebase *singleUserRef = [activeUsersRef childByAutoId];
  [singleUserRef setValue: @"Whatever-the-key-is"];
  [singleUserRef onDisconnectRemoveValue];
];

上面的 sn-p 将维护一个活跃用户列表。

您现在需要做的就是显示计数。

斯威夫特

// Listen to the same ref as above
let activeUsersRef = Firebase(url: 'firebase-db.firebaseio.com/activeUsers')
activeUsersRef.observeEventType(.Value, withBlock:  (snapshot: FDataSnapshot!) in
  var count = 0
  // if the snapshot exists, get the children
  if snapshot.exists() 
    count = snapshot.childrenCount
  
)

Objective-C

Firebase *activeUsersRef = [[Firebase alloc] initWithUrl: @"<your-firebase-db>/activeUsers"];
[activeUsersRef observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) 
  NSUInteger count = 0;
  if ([snapshot exists]) 
    count = snapshot.childrenCount;
  
];

【讨论】:

:) 谢谢,但是你能不能给我一个objective-c的例子来效仿??? 如果您在问题中提及此类要求,而不是在有人为您写完答案之后,这将非常有帮助。 对不起,我下次要这样做。 @user1341993 - 转换也很简单。不过我也添加了。 我不明白为什么 [singleUserRef setValue authData.providerData["@email"]]; ?为什么电子邮件?我可以叫它什么吗??

以上是关于Firebase iOS SDK - 计算连接用户的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase iOS SDK 获取 user_pseudo_id

无法在 iOS 中连接 firebase crashlytics

facebook SDK [Firebase Ref.,Swift] 中缺少 FBSessionStateOpen

使用私有Google存储的Firebase iOS SDK身份验证

为啥 Firebase 控制台在 SDK 已与我的 Android 和 iOS 应用程序集成时要求我实施 SDK?

iOS Swift Firebase SDK 导入问题