首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TwilioChatClient没有来自channelWithSidOrUniqueName:completion:和getLastWithCount:completion的回调:

TwilioChatClient没有来自channelWithSidOrUniqueName:completion:和getLastWithCount:completion的回调:
EN

Stack Overflow用户
提问于 2021-01-13 19:09:02
回答 1查看 131关注 0票数 1

我们被TwilioChatClient卡住了一点,找不出出了什么问题。在某些特定情况下,不存在来自某些方法的回调。例如:

代码语言:javascript
复制
twilioChatClient.channelsList()?.channel(withSidOrUniqueName: someSid, completion: { result, channel
    //  this block is never called
}

但是我们可以使用以下方法获取这个频道:

代码语言:javascript
复制
twilioChatClient.channelsList()?.subscribedChannels().first(where: { $0.sid == someSid || $0.uniqueName == someSid })

我们将POST请求发送到服务器,在那里我们创建了新的通道。因此,应用程序从响应中获取SID,并在调用twilioChatClient.channelsList()?.channel(withSidOrUniqueName: "CH4155de0b7d374f34b027b5885b207ff9", completion...之后尝试连接到日志中,我们看到:

代码语言:javascript
复制
2021-01-13 18:15:51.167642+0200 <<<<TwilioChatClient: 0x28119a700>>>> -      | Chat IPM | channels: [api] get channel CH4155de0b7d374f34b027b5885b207ff9
2021-01-13 18:15:51.167875+0200 <<<<TwilioChatClient: 0x28119a700>>>> -      | Chat IPM | [Yq7OB] got channel from cache CH4155de0b7d374f34b027b5885b207ff9
2021-01-13 18:15:51.167928+0200 <<<<TwilioChatClient: 0x28119a700>>>> -      | Chat IPM | channels: got from cache CH4155de0b7d374f34b027b5885b207ff9

所以当然是Twilio找到了通道,但是为什么不调用完成块呢?

之后,我们找到了从subscribedChannels()直接获得通道的解决方法,但是我们仍然遇到了这个通道的另一个问题(从subscribedChannels()获取)

如果我们尝试使用以下方法从信道获取最后一条消息:

代码语言:javascript
复制
guard channel.status == .joined, channel.synchronizationStatus == .all else {
                    return
                }
channel.messages?.getLastWithCount(100, completion: { [weak self] resulte, twilioMessages in
     //  this block is never called also
})

看起来很奇怪..。这只会发生在新渠道,如果我们重新启动应用程序-一切都如预期的工作。

中没有错误。

代码语言:javascript
复制
- (void)chatClient:(nonnull TwilioChatClient *)client errorReceived:(nonnull TCHError *)error;

这里没有更新:

代码语言:javascript
复制
- (void)chatClient:(nonnull TwilioChatClient *)client connectionStateUpdated:(TCHClientConnectionState)state

代码语言:javascript
复制
- (void)chatClient:(nonnull TwilioChatClient *)client synchronizationStatusUpdated:(TCHClientSynchronizationStatus)status;

我们还在调用chatClient.connectionState == .connected and chatClient.synchronizationStatus == .completedchannel(withSidOrUniqueName:之前检查:getLastWithCount(

我们使用的是最新版本4.0.2,在3.1.1 (Xcode 12.2)中也是如此。

更多的信息。我们有控制器,用于显示AR (ARKit)。当场景被识别时,twilio就停止工作了。在viewDidLoad上,我们启动定时器,每秒钟执行两个动作

代码语言:javascript
复制
timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { [weak self] _ in
guard currentIndex < sids.count else { return }
            guard isWorking == false else { return }
let sid = sids[currentIndex]
print("DEBUG: calling channelWithSidOrUniqueName \(sid)")
    chatClient.channelsList()?.channel(withSidOrUniqueName: sid, completion: { result, channel in
                print("DEBUG: get completion from channelWithSidOrUniqueName \(result.isSuccessful())")

                guard let channel = channel else { return }
                if channel.synchronizationStatus == .all {
                    print("DEBUG: synchronizationStatus == all")
                }
                if channel.status == .joined {
                    print("DEBUG: status == .joined")
                }
                lastChannel = channel
                print("DEBUG: calling getLastWithCount \(channel.sid)")
                channel.messages?.getLastWithCount(5, completion: { result, _ in
                    print("DEBUG: get completion from getLastWithCount \(channel.sid) \(result.isSuccessful())")
                    currentIndex += 1
                    isWorking = false
                    })
                })

如果一切正常,我们可以在日志中看到

代码语言:javascript
复制
2021-01-14 13:12:47.435842+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | channels: [api] get user channels
DEBUG: calling channelWithSidOrUniqueName CH1425bfdb625945c1ab43bdb440e9ee2a
2021-01-14 13:12:47.437993+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | channels: [api] get channel CH1425bfdb625945c1ab43bdb440e9ee2a
DEBUG: get completion from channelWithSidOrUniqueName true
DEBUG: synchronizationStatus == all
DEBUG: status == .joined
DEBUG: calling getLastWithCount Optional("CH1425bfdb625945c1ab43bdb440e9ee2a")
2021-01-14 13:12:47.438580+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [9HU8c] channel: [api] get messages
2021-01-14 13:12:47.438727+0200  <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [9HU8c] messages: [api] getLastMessages, count 5
2021-01-14 13:12:47.438798+0200 <<<<TwilioChatClient: 0x282715790>>>> - 8564 | Sync TSCollectionItemQueryActivity(3) | constructed
2021-01-14 13:12:47.438865+0200  <<<<TwilioChatClient: 0x282715790>>>> - 8564 | Sync TSCollectionItemQueryActivity(3) | start 2999
2021-01-14 13:12:47.438977+0200 <<<<TwilioChatClient: 0x282715790>>>> - 2827 | Sync List | query page id: 2999
2021-01-14 13:12:47.439049+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Sync CoreDataActivity | query [1] /v3/Services/IS566142b988d74af6bba32abbdb4a7474/Lists/ES6bb26aae7efb48b49ec0b232e2b1ba65/Items?Order=desc
2021-01-14 13:12:47.439117+0200  <<<<TwilioChatClient: 0x282715790>>>> -      | Twilsock Message::makePayload | Payload size 0
2021-01-14 13:12:47.439234+0200 <<<<TwilioChatClient: 0x282715790>>>> -  289 | Twilsock Client | sendUpstreamMessage, id = RQ8bfe33a7e9ac4507a060e1332a533eff
2021-01-14 13:12:47.648547+0200 <<<<TwilioChatClient: 0x282715790>>>> - 8564 | Sync TSCollectionItemQueryActivity(3) | response status 200 body 3349 bytes
2021-01-14 13:12:47.649263+0200  <<<<TwilioChatClient: 0x282715790>>>> - 8564 | Sync TSCollectionItemQueryActivity(3) | destructed
2021-01-14 13:12:47.649585+0200  <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [9HU8c] messages: query done, results count 3
DEBUG: get completion from getLastWithCount Optional("CH1425bfdb625945c1ab43bdb440e9ee2a") true

但过了一段时间它就停止工作了

代码语言:javascript
复制
2021-01-14 13:12:49.435863+0200  <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | channels: [api] get user channels
DEBUG: calling channelWithSidOrUniqueName CHa109c68be1454e5ca8bfffa3eedd37f2
2021-01-14 13:12:49.437479+0200  <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | channels: [api] get channel CHa109c68be1454e5ca8bfffa3eedd37f2
DEBUG: get completion from channelWithSidOrUniqueName true
DEBUG: synchronizationStatus == all
DEBUG: status == .joined
DEBUG: calling getLastWithCount Optional("CHa109c68be1454e5ca8bfffa3eedd37f2")
2021-01-14 13:12:49.438019+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [NRBeN] channel: [api] get messages
2021-01-14 13:12:49.438139+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [NRBeN] messages: [api] getLastMessages, count 5
2021-01-14 13:12:49.438248+0200 <<<<TwilioChatClient: 0x282715790>>>> - 8572 | Sync TSCollectionItemQueryActivity(3) | constructed
2021-01-14 13:12:49.438320+0200 <<<<TwilioChatClient: 0x282715790>>>> - 8572 | Sync TSCollectionItemQueryActivity(3) | start 3003
2021-01-14 13:12:49.438384+0200 <<<<TwilioChatClient: 0x282715790>>>> - 6750 | Sync List | query page id: 3003
2021-01-14 13:12:49.438451+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Sync CoreDataActivity | query [1] /v3/Services/IS566142b988d74af6bba32abbdb4a7474/Lists/ES0ca1135ad73e45d9b0f9e482ea1884b1/Items?Order=desc
2021-01-14 13:12:49.438551+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Twilsock Message::makePayload | Payload size 0
2021-01-14 13:12:49.438635+0200 <<<<TwilioChatClient: 0x282715790>>>> -  289 | Twilsock Client | sendUpstreamMessage, id = RQc3dafd4ae4a546fa8cebee15567d1d14

2021-01-14 13:12:49.629690+0200 <<<<TwilioChatClient: 0x282715790>>>> - 8572 | Sync TSCollectionItemQueryActivity(3) | response status 200 body 3349 bytes
2021-01-14 13:12:49.630136+0200 <<<<TwilioChatClient: 0x282715790>>>> - 8572 | Sync TSCollectionItemQueryActivity(3) | destructed
2021-01-14 13:12:49.630233+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [NRBeN] messages: query done, results count 3
2021-01-14 13:12:49.630302+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [NRBeN] messages: range 0:2
2021-01-14 13:12:49.630368+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [JUbw4] message: StateNoState->StateNotInitialized
2021-01-14 13:12:49.630433+0200  <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [JUbw4] message: StateNotInitialized->StateInitialized
2021-01-14 13:12:49.630498+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [v2zHz] message: StateNoState->StateNotInitialized
2021-01-14 13:12:49.630562+0200  <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [v2zHz] message: StateNotInitialized->StateInitialized
2021-01-14 13:12:49.630797+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [nPcGj] message: StateNoState->StateNotInitialized
2021-01-14 13:12:49.630863+0200 <<<<TwilioChatClient: 0x282715790>>>> -      | Chat IPM | [nPcGj] message: StateNotInitialized->StateInitialized

之后,我的方法将永远等待来自getLastWithCount的回调。

如有任何建议或建议,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-01-20 15:13:28

Twilio团队证实,当我们在ARKit上使用iOS 14.3时,存在一些问题。14.4 https://github.com/twilio/twilio-chat-ios/issues/22

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65708362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档