收藏
回答

微信分享 GIF 为什么必须添加 thumbData 数据,这个数据似乎没看到使用?

环境:

  • 微信 SDK 版本: XCFramework 2.0.2,不包含支付功能。
  • 手机: iPhone13,iOS 16.5
  • 微信版本: 8.0.43

开发功能:分享 GIF 到微信

let emoObject = WXEmoticonObject()
emoObject.emoticonData = emojiData
let message = WXMediaMessage()
message.title = "HelloWorld"
message.description = "测试一下"

// 这里如果不传指或者传 nil 的话,分享 GIF 就会失败,[errorCode-5-微信不支持]
// 这里如果传递了一个完全不同的 GIF,可以发现整个分享过程并没有使用这个 thumbData 内容,而是一直使用 emoObject 内容
// 那么这个 thumbData 作为一个必须传递的参数,到底发挥了什么作用呢?
// 是为了兼容低版本吗?如果是为了兼容低版本,可以说一下是为了兼容哪个版本吗?影响范围大概是什么样的呢?
// 希望微信官方可以提供一些信息。
message.thumbData = thumbData

message.mediaObject = emoObject
let request = SendMessageToWXReq()
request.bText = false
request.message = message
WXApi.send(request) { _ in }

使用 WXEmoticonObject.emoticonData 装载了 GIF 文件,

如果我不传 thumbData 的话,分享就会失败。

但是我传递了 thumbData,分享可以成功,但是我发现微信并没有进行使用 thumbData 数据。

我故意传了一个体积很小并且和分享内容完全不同的 GIF作为 thumbData,发现在分享预览时展示的仍然是实际分享的 GIF 没有使用 thumbData 图片。

那么这里 thumbData 到底是起到什么作用呢?

我在开发者文档中,找到了分享小程序时 thumbData 的作用说明。描述如下

//兼容旧版本节点的图片,小于32KB,新版本优先使用 WXMiniProgramObject 的 hdImageData 属性

但是我没有找到分享 GIF 的 thumbData 的使用说明。

那么分享 GIF 时,thumbData 作为一个必须传递的参数,到底是起到了什么作用呢?

是为了兼容低版本吗?如果是为了兼容低版本,可以说一下是为了兼容哪个版本吗?影响范围大概是什么样的呢?希望微信官方可以提供一些信息。

回答关注问题邀请回答
收藏

3 个回答

  • 天下无我
    天下无我
    2023-11-16
    Android SDK 版本如下
    com.tencent.mm.opensdk:wechat-sdk-android:6.8.0
    
    查看源码发现这里的确对 查看源码发现这里的确对 TYPE_EMOJI = 8 做了判断 thumbData 不可为空,
    且要求其长度需居于区间 (0, 64K) 内
    那目的到底是什么那?thumbData 的作用是什么那?
    

    2023-11-16
    有用 1
    回复
  • 豆豆
    豆豆
    05-17

    thumbData是封面图,也就是你收藏的那个缩略图,不能超过64k,不然发不出去


    05-17
    有用
    回复
  • 比较土的微信昵称
    比较土的微信昵称
    2023-11-16

    有微信的官方人员解释一下吗?谢谢🙏

    2023-11-16
    有用
    回复
登录 后发表内容