多种方案解决IOS下uni.share分享分包页面报错Error: Framework inner error

news/2024/9/23 5:59:58/

项目场景:

有个需求是用uni.share从app分享微信小程序,发现在苹果手机真机调试的时候 跳转的目标页面会白屏、页面样式错乱、一些组件不出现等问题。并且报错

Error: Framework inner error 

在这里插入图片描述


问题描述

uniapp开发在苹果手机下app分享微信小程序会出现白屏、样式错乱问题,并且配置均正确 排除配置问题。满足以下条件 均可100%复现

  1. ios手机必现、安卓手机正常
  2. 分享的小程序目标页面是小程序分包下的页面
  3. 目标页面引入的组件多,基础页面正常

app分享代码如下

uni.share({provider: 'weixin',type: 5,title: that.shareTitle,scene: 'WXSceneSession',imageUrl: that.shareImageUrl,miniProgram: {id: getBaseConfig().WE_CHAT_OFFER_ID, //要跳转小程序的原始IDtype: getBaseConfig().WE_CHAT_OFFER_TYPE,//小程序版本类型 0正式版 1开发版 2体验版path:'/subpkg/safeguard/SafeguardDetailPage/subPage/firstCheckData',//跳转的目标页面webUrl: 'https://mujidigital.com/index',},success: (e) => {uni.showToast({title: '分享成功',icon: 'none',});},fail: (e) => {uni.showToast({title: '将通过微信打开,请下载微信',icon: 'none',});},});

解决方案:

一开始会认为是没有配置预加载分包配置 preloadRule导致的,然后配置了也是一样的有问题。

下面是我的项目结构图
在这里插入图片描述

  1. 首先问题出现之一就是这个z-paging组件是来自uni_modules下的,然后分包下页面直接引用主包的组件就会出现这个。解决方案 可以把分包使用的组件直接copy到分包下引用注释即可
  2. 在app下uni.share的path做操作,大概流程是先跳到主包下一个页面作为中转页面 然后做相关逻辑下发到具体分包页面 着重讲这一方案

app分享代码path逻辑调整


// 分享小程序地址sharePathUrl() {//要带的参数const storageParams = {addressCityId: this.storageData.addressCityId,addressProvinceId: this.storageData.addressProvinceId,addressCity: this.storageData.addressCity,storageTypes: JSON.stringify(this.storageData.storageTypeList),};const obj = {//jumpUrlType做页面区分 这里约定是storageListPagestorage: this.joinUrl('pages/homepage/homepage', { jumpUrlType: 'storageListPage', ...storageParams }),};return obj[this.showTitleType];},uni.share({provider: 'weixin',type: 5,title: that.shareTitle,scene: 'WXSceneSession',imageUrl: that.shareImageUrl,miniProgram: {id: getBaseConfig().WE_CHAT_OFFER_ID, //要跳转小程序的原始IDtype: getBaseConfig().WE_CHAT_OFFER_TYPE,path: that.sharePathUrl,webUrl: 'https://mujidigital.com/index',})

APP代码调整概括
其中我这有多个跳转页面,预期是自己设计一个映射表
app中通过jumpUrlType字段的值来映射小程序下的具体分包页面
pages/homepage/homepage是小程序下的中转页面路径
jumpUrlType字段的值来映射小程序下的具体分包页面
其余的是要带的业务参数

小程序分发代码调整

中转页的onLoad代码

  onLoad(option) {// app跳转分包页面小程序 特殊处理 分发操作this.jumpPageTypeHandle(option);},methods:{// 分发分享进入各个页面jumpPageTypeHandle(opt){console.log(opt,'optopt');if (!XEUtils.isEmpty(opt)) {const jumpUrlType = opt.jumpUrlType ? opt.jumpUrlType : 'topicDetail';// topicDetail是详情页 storageListPage 是冷库列表 faDaDaApprove是电子签 safeguardProcessPage是牧集保障订单 firstCheckData是验证报告 topicCashActivity活动const jumpUrlObj = {'topicDetail':'/subpkg/topic/topicDetail/index','storageListPage':'/subpkg/storage/StorageListPage/index','faDaDaApprove':'/subpkg/groupPage/faDaDaSign/approve','safeguardProcessPage':'/subpkg/safeguard/SafeguardProcessPage/index','firstCheckData':'/subpkg/safeguard/SafeguardDetailPage/subPage/firstCheckData','topicCashActivity':'/subpkg/topicCashActivity/index',}const jumpUrl = jumpUrlObj[jumpUrlType];//一定要延迟跳转,需要等待分包加载完成 不然一样失效  延迟时间差不多1ssetTimeout(()=>{navigateTo(jumpUrl,opt);}, 1000);}},}

小程序代码调整概括
在onload拿到jumpUrlType 字段 去对照要跳转的分包页面路劲
然后带上相关参数做延迟跳转``延迟跳转``延迟跳转

原因分析

目前了解到的是设备差异性,因为安卓手机能够直接跳分包不会有问题,苹果手机分享的分包页面就会出现,核心本质的原因就是分包页面不能引入主包组件 不然会出现各种各样的问题


http://www.ppmy.cn/news/1510967.html

相关文章

C++(STL)的List解读

目录 list简介 list的几个特性 接口函数 1.默认成员函数 2.迭代器相关函数 3.容量相关的函数 4.成员访问相关的函数 5.modify系列 6.operation系列 7.重载在全局的函数 list简介 Lists are sequence containers that allow constant time insert and erase operation…

【RISC-V设计-13】- RISC-V处理器设计K0A之指令测试

【RISC-V设计-13】- RISC-V处理器设计K0A之指令测试 文章目录 【RISC-V设计-13】- RISC-V处理器设计K0A之指令测试1.简介2.验证用例3.指令代码4.链接脚本5.编译脚本6.仿真结果6.1 复位结束6.2 运行成功6.3 终端打印 7.总结 1.简介 借助上一篇文章所提及的验证环境,…

C语言实现排序之快速排序算法

一、快速排序讲解 基本思想 快速排序的核心在于选择一个“基准”元素,然后通过一系列操作将数据分为两部分,使得一部分的所有元素都比另一部分的元素小。具体来说,选择一个基准元素后,所有比基准小的元素都会被移动到基准的左边&…

设计模式在芯片验证中的应用——状态

一、状态模式 状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 在RTL中可能存在复杂的有限状态机FSM,在任何一个特定状态中, RTL的行为都不相同,…

比特猫连接仙宫云__教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、注册仙宫云账号2、开始部署GPU实例3、部署GPU计算容器4、选择镜像5、支付宝实名认证6、打开并复制WebUI7、复制WebUI网址8、停止计费 比特猫(bitcat)入口 提示&a…

说一下Android中的IdleHandler

IdleHandler 是 Android 中的一个接口,常用于在主线程空闲时执行一些低优先级的任务。 作用: 它提供了一种在主线程空闲时执行额外操作的机制,能够优化应用的性能和资源利用。 工作原理: 当主线程没有其他任务需要处理&#xff…

【Linux多线程】线程同步 与 生产者消费者模型(无锁化模型)

文章目录 1. Linux线程同步1.1 条件变量1.2 同步概念与竞态条件1.3 条件变量函数示例代码1:示例代码2 1.4 为什么 pthread_ cond_ wait 需要互斥量1.5 条件变量使用规范 2. 生产者消费者模型3. 读者 写者 问题3.1 读写锁3.2 读写锁的相关接口 4. 扩展:无锁化模型4.1…

浅谈企业数字化转型的认知、价值及策略

2024年作为不寻常的一年,企业的经营环境发生了显著变化,复杂、不确定、不可预测成为常态。在新常态下,野蛮生长模式转向更务实的精耕细作。 同时,在诸多不确定的因素中,数字化加速推进的趋势是确定无疑的。数字化以前…