收藏
回答

鸿蒙 Next 微信分享小程序白屏,请问怎么解决?

private async share(
  ctx: common.UIAbilityContext,
  shareParam?: BaseShareParam,
  thumbData?: Uint8Array
) {

  const miniAppObject = new wxopensdk.WXMiniProgramObject()
  miniAppObject.userName = "gh_xxxx" // 真实有效的 ID
  miniAppObject.path = shareParam?.share_mini_app_path
  miniAppObject.miniprogramType = wxopensdk.WXMiniProgramType.RELEASE

  const mediaMessage = new wxopensdk.WXMediaMessage()
  mediaMessage.mediaObject = miniAppObject
  mediaMessage.title = shareParam?.share_title
  mediaMessage.description = shareParam?.share_message
  mediaMessage.thumbData = thumbData


  const req = new wxopensdk.SendMessageToWXReq()
  req.scene = wxopensdk.SendMessageToWXReq.WXSceneSession
  req.message = mediaMessage

  this.wxAPI.sendReq(ctx, req)
}


以上是我有关微信分享小程序的代码,其中 thumbData 是来源于对于图片 url 的下载后的 ArrayBuffer,我会将得到的 ArrayBuffer 通过 new Uint8Array(arrayBuffer) 转成 Uint8Array,下载的代码片段来自于

private downloadImageWithUrl(url: string,
  completion: (imageData: ArrayBuffer) => void) {
  http.createHttp().request(url,
    (error: BusinessError, data: http.HttpResponse) => {
      if (error || data.responseCode != 200) {
        return
      }
      completion((data.result as ArrayBuffer))
    })
}


在我的开发过程中,我发现我这边在不同的 url 对应的图片上,能稳定复现一些不一样的表现,具体表现为,

对于 url: https://z1.muscache.cn/im/pictures/miso/Hosting-617063718566302384/original/717a4c2d-e8a9-4798-8378-0d878e0ed56e.jpeg?im_w=720,分享的时候跳转至微信,在出现联系人列表的之前,就会白屏,但是对于另外一个 url :https://z1.muscache.cn/im/pictures/ef9cd0cb-aac1-41d1-b46f-9184a610f92e.jpg?im_w=720,就一切正常。

期初我以为是 ArrayBuffer 或者是 Uint8Array 大小超限制,于是我打印了他们的 thumbData.byteLength,发现一切正常的那个 url 下载后的字节数是 74992,但是白屏的那个对应的字节数是 20803,反倒更小一些。但是经过测试,我发现如果注释掉 mediaMessage.thumbData = thumbData 这一行,缺省这个字段的话,分享也一切正常。


我这边使用的版本信息为

微信 app 版本:1.0.3

微信 SDK 版本:1.0.7


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

1 个回答

  • 社区技术运营专员--Demons
    社区技术运营专员--Demons
    03-21

    你好,麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点

    03-21
    有用
    回复
登录 后发表内容