iOS端Microsoft Teams Bot的AdaptiveTextBlock文本渲染异常咨询
Teams iOS端Adaptive Card渲染异常问题排查
问题描述
我在Microsoft Teams Bot中发送带按钮的消息,使用了Adaptive Card及自适应控件,这些消息在Windows桌面端和Android版Teams中显示正常,但iOS设备(含iPad)上出现渲染异常:
具体问题
- AdaptiveTextBlock中用
**包裹的高亮文本,iOS端会导致整句变粗,且高亮单词比其他文本更粗 - 文本包含@提及用户名时,高亮完全失效,偶尔整条消息会消失
代码示例
var entList = new List<Mention>() { new Mention() { Mentioned = new ChannelAccount(id: turnContext.Activity.From.Id, name: turnContext.Activity.From.Name), Text = $"{turnContext.Activity.From.Name}", } }; var card = new AdaptiveCard("1.5"); var tblock = new AdaptiveTextBlock(); tblock.Text = "<at>"+ turnContext.Activity.From.Name + "</at> Hi! this is **bold text**"; tblock.Wrap = true; card.Body.Add(tblock); var act = MessageFactory.Text(""); act.Attachments.Add(new Attachment() { Content = card, ContentType = AdaptiveCard.ContentType }); var entities = new { entities = entList }; card.AdditionalProperties.Add("msteams", entities); await turnContext.SendActivityAsync(act);
问题分析与解决建议
1. Markdown加粗渲染异常处理
Adaptive Card的Markdown渲染在不同平台存在兼容性差异,iOS版Teams对**的解析逻辑和桌面/Android端不一致。建议改用原生Adaptive Card控件实现局部加粗,避免依赖Markdown:
var tblock = new AdaptiveTextBlock(); tblock.Inlines = new List<AdaptiveInline>() { new AdaptiveMentionInline() { Mention = entList[0] }, new AdaptiveTextRun() { Text = " Hi! this is " }, new AdaptiveTextRun() { Text = "bold text", Weight = AdaptiveTextWeight.Bolder } }; tblock.Wrap = true;
通过AdaptiveTextRun的Weight属性控制局部文本粗细,能规避跨平台解析差异。
2. @提及导致的异常处理
当前代码同时使用<at>标签和Mention实体,这种混合方式易在iOS端触发兼容性问题。建议统一使用AdaptiveMentionInline控件处理@提及,而非直接在文本中插入<at>标签,确保各平台正确解析提及内容,避免冲突导致的渲染异常。
3. 平台bug确认
若上述优化后问题仍存在,大概率是iOS版Teams的Adaptive Card渲染bug:
- 先将Teams iOS端升级到最新版本测试
- 可在微软开发者社区提交反馈,提供卡片代码和设备信息,确认是否为已知问题
内容的提问来源于stack exchange,提问作者Swapnil Chowkekar
相关产品推荐
相关产品推荐

