美文网首页
关于 Telegram 收到 Sticker 消息闪退

关于 Telegram 收到 Sticker 消息闪退

作者: 试图与自己和解 | 来源:发表于2022-12-08 11:48 被阅读0次

当我还在吭哧吭哧的埋头苦钻 Telegram 相关资料时,收到了服务端小伙伴给我提来的一个 Bug:用其他客户端发送 Sticker 贴图到 iOS 端, 然后iOS 端点击 有 Sticker 的聊天会立刻闪退

image.png

立马停下手里的事儿,上手一测,果然收到 Sticker 消息,点击聊天就闪退,Xcode 定位到崩溃 ChatMessageInteractiveFileNode 这个类,发现是有个似乎是有关文件加载进度 progress 的值返回 NAN 无效数据,没办法,哪里漏了就补上,于是将 progress 的值进行 NAN 数据忽略处理:

image.png
很有效,点进聊天界面不崩了
image.jpg

但一张模糊的点状图 加一个 0BAnimatedSticker.tgs 文件是什么鬼?我们期望是需要显示的是能唱、跳、rap、篮球的 Sticker 贴纸动画消息啊,于是开始跟服务端大眼瞪小眼,开始推导问题出在哪,一开始以为是从服务器拉取 Sticker 消息时拉取资源失败了,可其他端却都能正常拉取显示,后来发现 iOS 也能发送 Sticker 消息,其他端都能正常显示,但 iOS 端退出聊天页面,重新从聊天列表进来以后,原本自己发送的正常显示的 Sticker 消息又变成了 AnimatedSticker.tgs 文件;

4e1bc212-fc00-4d8d-bf00-56e43e7fb243.jpg

开始怀疑是不是 iOS 磁盘写入数据失败了,或者 .tgs 文件解析失败;然后就是痛苦的 review 源码,终究还是败在了其几十层的回调嵌套中;

期间,试图去官方 issues 看有没有人遇到相同问题,发现还真有,可这是两年前的问题了,且问题一直没有被关闭,他是在 7.x 版本遇见的,而我的版本是 8.7.1,往后也有几个相同遭遇的伙伴留言说遇到了同样的问题,但都没有解决方案,我也同病相怜的留下到此一游:“me too, How do it”

苦思一番无果,突然目光又回到了文件 0 B 上,做 IM 都知道,聊天页面的本质是一个 ListView,里面的展示出来的 气泡消息样式 是根据 消息类型 决定的,而Telegram 中 ChatMessageItem 就是负责此类功能,既然我发送的是一个 Sticker 消息,为啥最终展现出来的是文件消息呢?

带着此疑问,点开了 ChatMessageItem 类,果然发现有对应的枚举值,他对 Sticker 消息规定了 0 < size 但我们收到的 Sticker 消息却显示的是 0 B 大小,因此,导致此消息被打回,最终当成了文件处理,而计算文件加载进度的时候 这个 0 B 又会被当成 除数,于是数据就 NAN 导致崩溃;

image.png

解决办法:去掉关于 Sticker 消息文件 0 B 大小的限制。

重新打包,运行: 131670557539_.pic.jpg

正是我们期望显示的能唱、跳、rap、篮球的 Sticker 贴纸动画消息!

相关文章

  • [AVCaptureStillImageOutput captu

    近期在bug后台收到一条NSInternalInconsistencyException导致闪退的记录。 出错堆栈...

  • iOS如何将闪退日志符号化

    这篇文章会介绍定位闪退的几种方法,由易到难进行介绍。当你手里关于闪退的信息越多,解决就越简单,反之,就会更难。 首...

  • 关于简书闪退

    2018年11月9日,参加简书日更第九天,为了一睹简书钻的风采,火速升级到最新版,无奈手机系统过低,app不断闪退...

  • iOS Crash 闪退日志详细解析教程

    前言 查看闪退日志的步骤:(1)获取闪退日志(2)获取 symbolicatecrash 脚本(3)获取闪退日志对...

  • iOS crash 闪退日志

    前言 查看闪退日志的步骤(1)获取闪退日志(2)获取symbolicatecrash 脚本(3)获取闪退日志对应的...

  • iOS:保护App不闪退

    iOS:保护App不闪退 iOS:保护App不闪退

  • 闪退

    写了半天,竟然闪退了…… 这个APP究竟有多烂……

  • 闪退

    他来我们办公室的时间很短,就三个月,一个试用期而已。 自从试用期结束之后,他就像脱缰的野马一样,开始在朋友圈里各种...

  • 闪退

    无意间知道一些以前从未察觉的事情之后,才发现自己有多愚蠢。可是我自己怎么就会在知道真相以后还是要把自己给蠢哭,我到...

  • 闪退

    今天在家里看视频,突然出现闪退,让我觉得莫名其妙。 重新打开视频,过了几分钟,又没了。换个视频,发生同样的情况。 ...

网友评论

      本文标题:关于 Telegram 收到 Sticker 消息闪退

      本文链接:https://www.haomeiwen.com/subject/qozofdtx.html