swift - swift中的方法可能无法正常工作,是否有原因?
问题描述
我正在 swiftui 应用程序中实现 Cometchat 和 Agora 音频聊天,在这两种情况下,我都面临着对我来说并不典型的情况。
直到某个方法一切正常,但在调用“加入频道”或“获取消息列表”的情况下,回调方法不起作用,虽然没有错误。
我附上了一个代码示例(一切都在方法之前有效,在回调内部却没有)。我不明白如何解决它。你能告诉我在哪个方向寻找解决方案吗?
print("DEBUG channelName", self.channelName, "uid", self.rtcId, "token", token) // works here
self.rtckit.joinChannel(byToken: token, channelId: self.channelName, info: nil, uid: self.rtcId) { (channel, uid, errCode) in
print("DEBUG Inside AgoraObservable rtckit.joinChannel()") // Doesn't work here
self.rtcId = uid
self.channel = self.rtmkit?.createChannel(withId: self.channelName, delegate: self)
self.channel?.join(completion: { joinStatus in
print("DEBUG Inside self.channel?.join")
if joinStatus == .channelErrorOk {
let user = AgoraUserData(rtmId: self.rtmId, rtcId: self.rtcId, username: self.username)
guard let jsonString = try? user.toJSONString() else {
return
}
self.membersLookup[user.rtmId] = (user.rtcId, user.username)
self.channel?.send(AgoraRtmMessage(text: jsonString))
} else {
self.channel = nil
}
})
}
和
// Works here
messagesRequest.fetchPrevious(onSuccess: { (messages) in
// Doesn't work here
for message in messages!{
if let receivedMessage = (message as ? TextMessage) {
print("Message received successfully. " + receivedMessage.stringValue())
}
else if let receivedMessage = (message as ? MediaMessage) {
print("Message received successfully. " + receivedMessage!.stringValue())
}
}
}) { (error) in
print("Message receiving failed with error: " + error!.errorDescription);
}
解决方案
推荐阅读
- embedded - 通过直接写寄存器来正确使用ADC?
- c# - Panel onPaint 渲染伪影
- c - 为什么任意键盘输入会改变c,curses中的其他内存?
- flutter - Flutter - TextField 内的文本未垂直居中
- jmeter - 如何使用 JMeter 登录 Azure Active Directory 单点登录 (SSO) 与 Google Cloud (G Suite) 连接器的集成
- php - Catalina sh:/usr/local/bin/php:可执行文件中的 CPU 类型错误
- amazon-cloudwatch - 创建特定分支模式时触发 CodeDeploy
- java - 如何在微调器 android studio 中更改项目
- amazon-web-services - AWS 将 SSL 证书从 Amazon Certificate Manager 安装到 EC2 Ubuntu
- javascript - 在功能组件中使用道具时出现问题 IT 说 TypeError:onClick 不是函数