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身份验证