TwilioChatClientDelegate应该由父母或孩子遵守吗?

时间:2017-04-11 22:07:50

标签: ios twilio

上下文

Parent是视图控制器,显示用户订阅的频道列表 Child是显示频道对话的视图控制器。用户进入它以发送消息。

目前,我Parent符合TwilioChatClientDelegate,这为我提供了chatClient(synchronizationStatusChanged)功能。我需要通过调用以下内容来提取频道列表:

func chatClient(_ client: TwilioChatClient!, synchronizationStatusChanged status: TCHClientSynchronizationStatus) {
        if status == .completed {
            client.channelsList().publicChannels(completion: { (result, paginator) in
                guard let result = result,
                    let paginator = paginator else {
                        print ("Error fetching channels")
                        return
                }
                if (result.isSuccessful()) {
                    for channel in paginator.items() {
                        print("Channel: \(channel.friendlyName)")
                    }
                    print ("done channeling")
                }
            })

因此,我也在这里初始化TwilioChatClient

问题:

我的困惑之源是:我还需要Child符合TwilioChatClientDelegate ,因为我需要它来订阅所有正在发送的消息通过函数chatClient(messageAdded)

进行通道

ParentChild订阅委托显然是很多开销和次优。但是,仅仅让Parent成为委托会引发如何让Child在该频道内接收必要消息的问题。

对此的任何指导都将非常感激。

1 个答案:

答案 0 :(得分:1)

我会通过创建一个专门的类来解决这个问题,比如TwilioChatManager - 它的目的是管理与Twilio相关的所有内容,以便从视图控制器卸载此代码。该类还符合TwilioChatClientDelegateTwilioClient代表。然后我会添加两个自定义协议,一个包含Parent所需的方法,另一个包含Child所需的协议。管理员将拥有两个委托属性,并将从Twilio委派给其各自的代表 - 这里有机会对数据进行一些预处理,并且明确地传达了需要的内容。