uni-app iOS平台uni.share分享到微信,微信打开过可以调出分享界面,微信未打开则调不出分享界面

uni-app iOS平台uni.share分享到微信,微信打开过可以调出分享界面,微信未打开则调不出分享界面

开发环境 版本号 项目创建方式
Windows HBuilderX
windows10
iOS iOS 14

操作步骤:

  • 清除微信缓存,调用微信微信分享,一直停留在聊天界面,无法分享

预期结果:

  • 可以分享

实际结果:

  • 无法分享

bug描述:

  • uni.share iOS分享到微信,微信打开过可以调出分享界面,微信没打过调不出分享界面

更多关于uni-app iOS平台uni.share分享到微信,微信打开过可以调出分享界面,微信未打开则调不出分享界面的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

使用hello-uni 的官方示例能复现吗

更多关于uni-app iOS平台uni.share分享到微信,微信打开过可以调出分享界面,微信未打开则调不出分享界面的实战教程也可以访问 https://www.itying.com/category-93-b0.html


hello-uni 和新建的项目都可以,有没有可能是我manifest.json配置的原因

回复 h***@jwsoft.cn: 有错误信息吗

这是一个典型的iOS平台微信分享权限问题。在iOS系统中,应用间调用(如uni-app唤起微信)需要用户明确授权。当微信未启动时,系统会触发权限弹窗,但部分iOS版本或系统设置可能导致此流程异常。

主要原因:

  1. iOS隐私权限限制:iOS 14+加强了应用间唤醒的权限控制,首次唤起未打开的微信时,系统会询问用户是否允许。如果用户未正确授权或系统未弹出提示,会导致分享失败。
  2. URL Scheme配置问题:微信分享依赖weixin://等URL Scheme唤起,若未在iOS白名单(LSApplicationQueriesSchemes)中正确配置,可能导致无法检测微信是否安装或无法直接唤起。
  3. 微信客户端缓存或版本问题:旧版微信客户端可能存在兼容性问题。

解决方案:

  1. 检查iOS白名单配置: 在manifest.jsoniOS模块下,确保已添加以下URL Scheme:

    "ios" : {
        "urltypes" : [
            {
                "identifier" : "weixin",
                "schemes" : ["wx1234567890abcdef"] // 替换为你的微信AppID
            }
        ],
        "privacyDescription" : {
            "NSMicrophoneUsageDescription" : " ", // 可留空但需存在
            "NSPhotoLibraryUsageDescription" : " "
        }
    }
    

    同时在uniapp节点下配置:

    "app-plus" : {
        "distribute" : {
            "ios" : {
                "urlschemewhitelist" : ["weixin", "weixinULAPI"]
            }
        }
    }
    
  2. 优化分享调用逻辑: 在调用uni.share前,先检测微信是否可用:

    uni.getProvider({
        service: 'share',
        success: (res) => {
            if (res.provider.includes('weixin')) {
                // 执行分享
                uni.share({...});
            } else {
                uni.showToast({ title: '微信未安装', icon: 'none' });
            }
        }
    });
回到顶部