SwiftUI Stream SDK 4.9.2消息列表不显示用户名求助
解决Stream SwiftUI SDK 4.9.2消息列表不显示用户名的问题
针对你遇到的消息列表未显示用户名的情况,可按以下步骤排查解决:
1. 显式指定showAuthorName为true
虽然MessageDisplayOptions中showAuthorName默认值是true,但显式声明可以避免潜在的隐式覆盖问题。修改你的MessageDisplayOptions初始化代码:
let messageDisplayOptions = MessageDisplayOptions( showAvatars: false, showAuthorName: true // 显式开启用户名显示 )
2. 验证是否仅当前用户消息不显示用户名
Stream SDK默认逻辑中,当前登录用户发送的消息不会显示用户名,只有其他用户的消息才会展示。你可以切换到另一个测试账号发送消息,查看是否能正常显示用户名。如果是这个情况,这属于SDK默认行为,无需额外处理。
3. 确认StreamChat环境注入正确
确保你的ChatChannelView所在的视图层级,已经被StreamChat组件包裹,这样你初始化时配置的utils才能正确生效。示例代码结构如下:
StreamChat(chatClient: chatClient, utils: utils) { ChatChannelView( viewFactory: factory, channelController: chatService.chatClient.channelController(for: cid) ) }
如果ChatChannelView不在StreamChat的子层级中,你配置的MessageListConfig不会被应用。
4. 通过自定义ViewFactory强制控制用户名显示
如果以上方法都无效,可以通过重写ViewFactory的消息列表项创建方法,自定义消息视图的显示逻辑:
final class StreamCustomFactory: ViewFactory { @Injected(\.chatClient) public var chatClient static let shared = StreamCustomFactory() func makeChannelHeaderViewModifier( for channel: ChatChannel ) -> some ChatChannelHeaderViewModifier { EmptyChannelHeaderModifier(channel: channel) } // 重写消息列表项视图,强制显示用户名 func makeMessageListItemView( message: ChatMessage, showsMessageStatus: Bool, alignment: MessageAlignment, isFirst: Bool, isLast: Bool, isNewGroup: Bool, onLongPress: @escaping (ChatMessage) -> Void, onAvatarTap: @escaping (ChatUser) -> Void ) -> some View { DefaultMessageListItemView( message: message, showsMessageStatus: showsMessageStatus, alignment: alignment, isFirst: isFirst, isLast: isLast, isNewGroup: isNewGroup, onLongPress: onLongPress, onAvatarTap: onAvatarTap ) .messageDisplayOptions(.init(showAuthorName: true)) // 强制应用显示用户名的配置 } }
内容的提问来源于stack exchange,提问作者Rhythmus
相关产品推荐
相关产品推荐

