鸿蒙版微信小程序不可用,一文告诉你10分钟修复
<p>最近是否有人反馈微信小程序不可用或者界面异常,比如:</p><p><img src="https://img2024.cnblogs.com/blog/3637060/202505/3637060-20250529144317992-1299577885.jpg" alt="" height="406" width="177"><img src="https://img2024.cnblogs.com/blog/3637060/202505/3637060-20250529144350817-1434982285.jpg" alt="" height="406" width="177"><img src="https://img2024.cnblogs.com/blog/3637060/202505/3637060-20250529144421450-1718452199.jpg" alt="" height="406" width="177"></p>
<p>而开发者可能比较困惑,我的代码一直都没有更新过,为什么最近突然这么多报障的了?</p>
<p>其实很有可能反馈者使用的是华为新的鸿蒙操作系统,</p>
<p>华为的HarmonyOS 5自从24年9月开启商用后,发展极为迅速,尤其是25年3月的pura x以及5月底的nova 14系列发布后,用户量增长迅速,预计现有使用者过千万,微信小程序作为基础使用,必不可少,另外,华为新鸿蒙系统基本都在华为高端手机上才适配,这部分用户本身也是相对高价值用户,因此,小程序业主也比较关注这部分用户,作为开发者,需要提早做兼容,避免后续舆情和紧急修复。</p>
<p>本文针对鸿蒙上的小程序常见的一些问题适配,做下分享,大部分开发者可能就改几行代码(微信小程序本身就是类OS系统,本身就是跨端),就能完成适配。(微信开发者官网提示说明)</p>
<p><strong>1. platform支持问题</strong></p>
<p>小程序开发者习惯针对不同的平台做不同的策略处理,比如,区分andorid, ios , windows, 那么在新增一个OS 系统HarmonyOS的时候,可能就让程序不可用。</p>
<p>举例(错误代码):</p>
<pre><code>wx.getSystemInfo({
success: function (t) {
var p = t.platform;
this.isMobile = "android" === p || "ios" === p;
}
fail: function (t) {
this.isMobile = 0;
}
})
</code></pre>
<p>举例(错误代码):</p>
<pre><code>var p = wx.getSystemInfoSync();
var num = {
devtools: 44,
ios: 40, // IOS平台
android: 48 // android平台
} ,
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;
}
})
</code></pre>
<p>建议修改代码(业务适配时,增加鸿蒙平台的处理):</p>
<pre><code>var p = wx.getSystemInfoSync();
var num = {
devtools: 44,
ios: 40,
android: 48,
ohos: 48,
} ,
this.someting.set(num);
</code></pre>
<p>快速排查建议:<br>
针对此类问题,建议在代码中搜索 调用getSystemInfoSync /getSystemInfo/getDeviceInfo的地方,看看相关逻辑是否只处理IOS/android, 如果存在上述问题,建议优先加入OHOS分支,尝试让代码走android分支即可。</p>
<p><strong>2. UserAgent支持问题</strong></p>
<p>部分微信小程序开发者会使用UA的系统版本/XWEB等描述进行策略区分,导致小程序在新增HarmonyOS的环境,代码走入异常分支。</p>
<p><strong>举例: android 和HarmonyOS的UA参考</strong><br>
<strong>HarmonyOS Next 微信的 UA(微信1.0.6.41版本测试):</strong></p>
<p>Mozilla/5.0 (Phone; <em><strong>OpenHarmony 5.0</strong></em>) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 <em><strong>ArkWeb</strong></em>/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</p>
<p><strong>Android 系统微信中的 UA</strong></p>
<p>Mozilla/5.0 (Linux; <em><strong>Android 12</strong></em>; ALT-AL10 Build/HUAWEIALT-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.103 Mobile Safari/537.36 <em><strong>XWEB</strong></em>/1300149 MMWEBSDK/20241103 MMWEBID/6593 MicroMessenger/8.0.54.2760(0x2800363F) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64</p>
<p><strong>如何适配:</strong></p>
<ol>
<li>针对是否是移动端的设备,需要增加检测是否包含 OpenHarmony的判断。</li>
<li>其他针对UA返回值里面的字符串匹配,建议要区分OpenHarmony的平台,比如,ArkWeb/XWEB.</li>
</ol>
<p>举例(错误代码):</p>
<pre><code>function isMobile() {
var e = navigator.userAgent.toLowerCase();
return /Android|webos|iPhone|iPod|BlackBerry/i.test(e) ? !0 : 0; // 小程序只在移动端支持
}
</code></pre>
<p>建议修改代码(平台判断时,需要增加鸿蒙平台的识别):</p>
<pre><code>function isMobile() {
var e = navigator.userAgent.toLowerCase();
return /Android|webos|iPhone|iPod|BlackBerry|OpenHarmony/i.test(e) ? !0 : 0; // 移动端新增openHarmony支持
}
</code></pre>
<p><strong>快速排查建议:</strong></p>
<p>针对此类问题,建议在代码中搜索 调用navigator.userAgent的地方,看看相关逻辑是否未考虑HarmonyOS的逻辑, 如果存在上述问题,建议优先加入OHOS分支,尝试让代码走android分支即可。</p>
<p><strong>3. 其他问题</strong></p>
<p>作者在开发中也遇到一些其他问题,比如,鸿蒙上微信小程序的支持API还不完善,导致个别功能受阻,</p>
<p>可以去官网看最新的API列表中:<br>
https://developers.weixin.qq.com/miniprogram/dev/api/</p>
<p>找到希望使用的API以后,在看这里可以确认当前是否支持鸿蒙:<br>
<img src="https://img2024.cnblogs.com/blog/3637060/202505/3637060-20250529180839162-1182456997.png" alt="" loading="lazy"></p>
<p>遇到尚未支持的API,可以通过这里向微信小程序官方进行反馈:<br>
https://developers.weixin.qq.com/community/blog/create/1</p>
<p><img src="https://img2024.cnblogs.com/blog/3637060/202505/3637060-20250529180952900-1692566713.png" alt="" loading="lazy"></p>
<p>好在微信现在更新挺快的,基本上1个月好几个内测版本更新,应该是在快速补齐能力,建议小程序开发者可以定期1-2周查看下需要的API是否已支持。</p>
<p><strong>4. 参考文档</strong></p>
<p>鸿蒙 OS 适配指南:developers.weixin.qq.com/miniprogram…<br>
微信开放标签:developers.weixin.qq.com/doc/offiacc…</p><br><br>
来源:https://www.cnblogs.com/HarmonyOS5/p/18897113
頁:
[1]