欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。
根据知识库和对话历史,鸿蒙设备上 uni.getProvider 获取到的 isWeChatInstalled 一直为 false 是一个已知问题,通常与配置和集成方式有关。
根本原因
uni.getProvider 在 app 平台获取可用服务商的逻辑,与打包时配置的模块和 sdk 信息直接相关,而不是单纯检测手机是否安装了微信客户端。在鸿蒙平台上,这需要同时满足以下条件:
- manifest.json 配置正确:必须在
app-harmony 的 modules 中正确配置 uni-oauth 的 weixin 节点,并填写 appid。
- 集成方式正确:如果你是将 uniapp 代码打包成 wgt 资源,再集成到鸿蒙原生工程,需要确保微信相关的原生库(.har)已被正确引入和注册。
解决方案
请按以下步骤排查和修复:
1. 检查 manifest.json 配置
在 manifest.json 的源码视图中,确认 app-harmony 节点下是否完整配置了微信登录模块。不能是空对象,必须包含 appid。一个典型的配置示例如下:
"app-harmony": {
"distribute": {
"modules": {
"uni-oauth": {
"weixin": {
"appid": "你的微信开放平台appid" // 这里必须填写
}
}
}
}
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
来自对话知识库的反馈:配置空节点 "weixin": {} 会导致 getProvider 返回空数组。
2. 检查 querySchemes 配置
鸿蒙平台需要声明允许查询的 scheme,否则无法检测到微信是否安装。你需要在鸿蒙原生工程的 module.json5 文件中添加 querySchemes 配置。
在项目根目录的 harmony-configs/entry/src/main/module.json5 文件中,确保 querySchemes 数组包含 "weixin"。
注意:根据微信官方文档和对话知识库,请勿配置 wxopensdk。配置 wxopensdk 后可能导致微信登录无法回调。
一个完整的 module.json5 配置参考:
{
"module": {
"name": "entry",
"type": "entry",
"querySchemes": [
"weixin"
// 注意:不要添加 "wxopensdk"
],
"abilities": [
{
"skills": [
{
"actions": [
"action.system.home",
"wxentity.action.open"
]
}
]
}
]
}
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
3. 检查原生工程集成(仅限离线打包或 wgt 集成)
如果你是将 uniapp 代码打包成 wgt 资源,然后集成到鸿蒙原生工程中,需要确认微信支付或登录的原生库(.har)已正确集成。
根据对话知识库和官方文档 HarmonyOS平台接入微信登录 的指引,你需要:
- 从 hbuilderx 生成的离线资源包中找到对应的微信 har 包。
- 将其放入鸿蒙原生工程的
libs 目录。
- 在
oh-package.json5 中添加依赖并同步。
- 在
index.generated.ets 等入口文件中正确注册 provider。
4. 使用自定义基座调试
标准运行基座使用的是 dcloud 的默认配置,无法用于测试第三方 sdk 功能。请务必打“自定义调试基座”或正式打包进行测试。
总结
isWeChatInstalled 返回 false 通常不是由单一原因引起的。请按以下顺序检查:
manifest.json 的 app-harmony 节点是否填写了正确的 appid。
module.json5 的 querySchemes 是否包含 "weixin"(且不包含 "wxopensdk")。
- 是否使用了自定义基座进行调试。
- 如果是 wgt 集成模式,检查原生 .har 库的引入和注册步骤。
如果以上步骤都确认无误后问题依旧,建议提供一个可复现的工程到 ask 社区发帖,并附上相关配置截图和操作步骤,以便 dcloud 官方人员进一步协助定位。
2 个回复
1***@qq.com (作者)
ai回复的没有用,配置我都加了,也检查了
Ask小助手
根据知识库和对话历史,鸿蒙设备上
uni.getProvider获取到的isWeChatInstalled一直为false是一个已知问题,通常与配置和集成方式有关。根本原因
uni.getProvider在 app 平台获取可用服务商的逻辑,与打包时配置的模块和 sdk 信息直接相关,而不是单纯检测手机是否安装了微信客户端。在鸿蒙平台上,这需要同时满足以下条件:app-harmony的modules中正确配置uni-oauth的weixin节点,并填写appid。解决方案
请按以下步骤排查和修复:
1. 检查 manifest.json 配置
在
manifest.json的源码视图中,确认app-harmony节点下是否完整配置了微信登录模块。不能是空对象,必须包含appid。一个典型的配置示例如下:2. 检查 querySchemes 配置
鸿蒙平台需要声明允许查询的 scheme,否则无法检测到微信是否安装。你需要在鸿蒙原生工程的
module.json5文件中添加querySchemes配置。在项目根目录的
harmony-configs/entry/src/main/module.json5文件中,确保querySchemes数组包含"weixin"。注意:根据微信官方文档和对话知识库,请勿配置
wxopensdk。配置wxopensdk后可能导致微信登录无法回调。一个完整的
module.json5配置参考:3. 检查原生工程集成(仅限离线打包或 wgt 集成)
如果你是将 uniapp 代码打包成 wgt 资源,然后集成到鸿蒙原生工程中,需要确认微信支付或登录的原生库(
.har)已正确集成。根据对话知识库和官方文档 HarmonyOS平台接入微信登录 的指引,你需要:
libs目录。oh-package.json5中添加依赖并同步。index.generated.ets等入口文件中正确注册 provider。4. 使用自定义基座调试
标准运行基座使用的是 dcloud 的默认配置,无法用于测试第三方 sdk 功能。请务必打“自定义调试基座”或正式打包进行测试。
总结
isWeChatInstalled返回false通常不是由单一原因引起的。请按以下顺序检查:manifest.json的app-harmony节点是否填写了正确的appid。module.json5的querySchemes是否包含"weixin"(且不包含"wxopensdk")。如果以上步骤都确认无误后问题依旧,建议提供一个可复现的工程到 ask 社区发帖,并附上相关配置截图和操作步骤,以便 dcloud 官方人员进一步协助定位。
要回复问题请先登录或注册
公告
更多>相关问题