写点什么

鸿蒙版微信小程序不可用,一文告诉你 10 分钟修复

  • 2025-05-28
    北京
  • 本文字数:1976 字

    阅读完需:约 6 分钟

鸿蒙版微信小程序不可用,一文告诉你10分钟修复

最近是否有人反馈微信小程序不可用或者界面异常,比如:


而开发者可能比较困惑,我的代码一直都没有更新过,为什么最近突然这么多报障的了?

其实很有可能反馈者使用的是华为新的鸿蒙操作系统,

华为的 HarmonyOS 5 自从 24 年 9 月开启商用后,发展极为迅速,尤其是 25 年 3 月的 Pura X 以及 5 月底的 Nova 14 系列发布后,用户量增长迅速,预计现有使用者过千万,微信小程序作为基础使用,必不可少,另外,华为新鸿蒙系统基本都在华为高端手机上才适配,这部分用户本身也是相对高价值用户,因此,小程序业主也比较关注这部分用户,作为开发者,需要提早做兼容,避免后续舆情和紧急修复。

本文针对鸿蒙上的小程序常见的一些问题适配,做下分享,大部分开发者可能就改几行代码(微信小程序本身就是类 OS 系统,本身就是跨端),就能完成适配。(微信开发者官网提示说明)

1. platform 支持问题

小程序开发者习惯针对不同的平台做不同的策略处理,比如,区分 andorid, ios , windows, 那么在新增一个 OS 系统 HarmonyOS 的时候,可能就让程序不可用。

举例(错误代码):


wx.getSystemInfo({

success: function (t) {

var p = t.platform;

this.isMobile = "android" === p || "ios" === p;

}

fail: function (t) {

this.isMobile = 0;

}

})

 

举例(错误代码):

var p = wx.getSystemInfoSync();

var num = {

devtools: 44,

ios: 40, // IOS平台

android: 48 // android平台

} [p.platform],

this.someting.set(num);

 

建议修改代码(平台判断时,需要增加鸿蒙平台的识别):

wx.getSystemInfo({

success: function (t) {

var p = t.platform;

this.isMobile = "android" === p || "ios" === p || "ohos" === p;

}

fail: function (t) {

this.isMobile = 0;

}

})


建议修改代码(业务适配时,增加鸿蒙平台的处理):

var p = wx.getSystemInfoSync();

var num = {

devtools: 44,

ios: 40,

android: 48,

ohos: 48,

} [p.platform],

this.someting.set(num);


快速排查建议:

​ 针对此类问题,建议在代码中搜索调用 getSystemInfoSync /getSystemInfo/getDeviceInfo 的地方,看看相关逻辑是否只处理 IOS/android, 如果存在上述问题,建议优先加入 OHOS 分支,尝试让代码走 android 分支即可。

2. UserAgent 支持问题

部分微信小程序开发者会使用 UA 的系统版本/XWEB 等描述进行策略区分,导致小程序在新增 HarmonyOS 的环境,代码走入异常分支。


举例:android 和 HarmonyOS 的 UA 参考

HarmonyOS Next 微信的 UA(微信 1.0.6.41 版本测试):

Mozilla/5.0 (Phone; ***OpenHarmony 5.0***) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ***ArkWeb***/4.1.6.1 Mobile MicroMessenger/8.0.6.41(0xf3100629) Weixin NetType/4G Lang uage/zh_CN MiniProgramEnv/ohos MMWE BID/8794 MMWEBSDK/202504030004X WEB/1140209


Android 系统微信中的 UA:

Mozilla/5.0 (Linux; ***Android 12***; ALT-AL10 Build/HUAWEIALT-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.103 Mobile Safari/537.36 ***XWEB***/1300149 MMWEBSDK/20241103 MMWEBID/6593 MicroMessenger/8.0.54.2760(0x2800363F) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64


如何适配:

1. 针对是否是移动端的设备,需要增加检测是否包含 OpenHarmony 的判断。

2. 其他针对 UA 返回值里面的字符串匹配,建议要区分 OpenHarmony 的平台,比如,ArkWeb/XWEB.


举例(错误代码)

 

function isMobile() {

var e = navigator.userAgent.toLowerCase();

return /Android|webos|iPhone|iPod|BlackBerry/i.test(e) ? !0 : 0; // 小程序只在移动端支持

}


建议修改代码(平台判断时,需要增加鸿蒙平台的识别):

function isMobile() {

var e = navigator.userAgent.toLowerCase();

return /Android|webos|iPhone|iPod|BlackBerry|OpenHarmony/i.test(e) ? !0 : 0; // 移动端新增openHarmony支持

}

 

快速排查建议:

针对此类问题,建议在代码中搜索调用 navigator.userAgent 的地方,看看相关逻辑是否未考虑 HarmonyOS 的逻辑, 如果存在上述问题,建议优先加入 OHOS 分支,尝试让代码走 android 分支即可。

3. 其他问题

作者在开发中也遇到一些其他问题,比如,鸿蒙上微信小程序的支持 API 还不完善,导致个别功能受阻,

可以去官网看最新的 API 列表中:https://developers.weixin.qq.com/miniprogram/dev/api/

找到希望使用的 API 以后,在看这里可以确认当前是否支持鸿蒙:


遇到尚未支持的 API,可以通过这里向微信小程序官方进行反馈:

https://developers.weixin.qq.com/community/blog/create/1


 

好在微信现在更新挺快的,基本上 1 个月好几个内测版本更新,应该是在快速补齐能力,建议小程序开发者可以定期 1-2 周查看下需要的 API 是否已支持。

4. 参考文档

鸿蒙 OS 适配指南developers.weixin.qq.com/miniprogram…

微信开放标签developers.weixin.qq.com/doc/offiacc…

2025-05-28 11:126516

评论

发布
暂无评论

敏捷领导力 (CAL E+O / ALJ) 认证

ShineScrum

用热爱,走一些“远”路!

禅道项目管理

软件测试 | 一个简单的Java范例

测吧(北京)科技有限公司

测试

@Lazy 注解为啥就能破解死循环?

江南一点雨

Java spring

MobPush 推送限制策略

MobTech袤博科技

程序员 前端 push 智能推送 推送

软件测试 | 编写第一个Java程序

测吧(北京)科技有限公司

测试

掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

点云标注在自动驾驶中的挑战

数据堂

12 点半!Voxel51 亚太地区计算机视觉线上 Meetup,速来!

Zilliz

计算机视觉 Milvus Zilliz voxel51

全加器

陈皮

软件测试 | Java程序的运行机制和Java虚拟机

测吧(北京)科技有限公司

测试

什么是大规模敏捷SAFe?SAFe大规模敏捷管理工具

顿顿顿

敏捷开发 safe 大规模敏捷 scrum工具

RocketMQ 事务消息导致事务消息阻塞 BUG 排查

陈皮

RocketMQ bug 事务消息

点云标注在自动驾驶中的重要性

数据堂

博睿数据获聘信通院DGA首批智库专家组

博睿数据

可观测性 智能运维 博睿数据 信通院 专家智库

百度知道上云与架构演进

百度Geek说

云原生 架构演进 业务上云 企业号 7 月 PK 榜

软件测试 | Java开发环境搭建

测吧(北京)科技有限公司

测试

质效两全:媒体服务的创新“顶设”

阿里云CloudImagine

云计算 视频云

揭秘高新技术发展最新趋势,程序猿视角下的技术革新感悟 | 社区征文

三掌柜

年中技术盘点

云原生机甲的构想

如水

云原生 servicemesh 云原生机甲 CloudMecha

AIGC第一波裁员已至

互联网工科生

人工智能 裁员 AIGC

实现在线直播源码高质量直播体验重要功能_山东布谷科技创作

山东布谷科技

软件开发 直播 源码搭建 直播源码 在线直播源码

为什么要做稳定性保障?

老张

SRE 稳定性保障

深耕行业创新 引领视听未来 | 宇视亮相北京Infocomm China 2023展会

新消费日报

浅谈大模型时代的后台技术发展|社区征文

后台技术汇

年中技术盘点

Jedis 参数异常引发服务雪崩案例分析

vivo互联网技术

服务雪崩 Redis集群模式 主从切换 Jedis参数设置

【我和openGauss的故事】 openGauss 5.0.0 分区表增强

daydayup

opengauss

鸿蒙版微信小程序不可用,一文告诉你10分钟修复_HarmonyOS_HarmonyOS_InfoQ精选文章