Swift 3 Firebase 聊天应用程序重复消息

Posted

技术标签:

【中文标题】Swift 3 Firebase 聊天应用程序重复消息【英文标题】:Swift 3 Firebase chat application duplicate messages 【发布时间】:2017-05-09 09:05:10 【问题描述】:

我希望得到一些建议/帮助。我在正在运行的聊天应用程序中遇到了一个巧妙的小错误,该应用程序当前使用基于 SWIFT3 的匿名 Firebase 身份验证。

一旦进入应用程序的聊天室,当我返回主页/登录页面时,它似乎几乎保留了在当前设备上登录的前一个用户,并且表现得好像您是多人一样。这使得在发送消息时,它会返回两个(或更多取决于您返回家/登录并继续进入房间的数量)聊天气泡。

我尝试过的一种方法是之前在此站点上的响应,我相信它是“尝试!FIREAuth.auth().signOut()”附加到 @IBAction 但我不确定这是否是设计的也适用于匿名用户?

我目前远离我的代码,直到今晚才能提供任何 sn-ps,但我肯定会在此之前回答任何我能回答的问题。

谢谢

【问题讨论】:

【参考方案1】:

匿名帐户的功能与任何其他帐户一样,因此可以使用FIRAuth.auth().signOut() 注销。

不可能有多个FIRAuth.auth().currentUser 与单个设备关联,所以我最好的猜测是您有多个模型被初始化为每个控制器初始化。

【讨论】:

欣赏答案。这可能是由于我兜售回到主页/登录页面的方式,我正在使用导航控制器返回到以前的页面,再次道歉我现在不能给出确切的代码,但我相信它正在使用将 Modal 推送到导航控制器,导航控制器依次访问根视图控制器。希望有帮助吗? 使用导航控制器应该取消初始化您的控制器,但如果模型在某处被强烈引用,则可能不会取消初始化。没有代码真的很难说,当你可以发布一些时我会再看看。 谢谢,哪一段代码最适合您查看?我相信我有 3-4 个控制器,但我认为会存储问题的两个控制器是聊天频道列表和聊天室本身的控制器。 有没有更简单的方法可以将代码发送给您?它太大了,装不下这个盒子。 在观看 Firebase 和应用程序运行方式之后,我认为错误可能位于 SENDERID 正在接收的调用数量内?我在这里添加了 viewChatController 的代码(忽略我正在测试的 deinit 代码):link

以上是关于Swift 3 Firebase 聊天应用程序重复消息的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase 检索和读取数据作为 NSArray (Swift 3)

输入聊天消息时的Firebase警告[重复]

从 firebase Swift 加载聊天

使用 Firebase 和 Swift 推送通知 [重复]

Swift Firebase 获取数据到类对象

在 Swift 中的 Firebase 实时数据库观察方法中具有异步函数的 DispatchGroup