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

news2024/9/19 10:46:52

项目场景:

有个需求是用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, //要跳转小程序的原始ID
              type: 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做页面区分 这里约定是storageListPage
        storage: 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, //要跳转小程序的原始ID
              type: 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];
        //一定要延迟跳转,需要等待分包加载完成 不然一样失效  延迟时间差不多1s
			  setTimeout(()=>{
			  	navigateTo(jumpUrl,opt);
			  }, 1000);
      }
		},
  }

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

原因分析

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第336题回文对

题目&#xff1a; 题解&#xff1a; // 哈希表实现 class Solution {public List<List<Integer>> palindromePairs(String[] words) {List<List<Integer>> res new ArrayList<>();int n words.length;Map<String, Integer> indices ne…

Nvidia显卡在深度学习应用中一些概念解释

之前一直在搞深度学习&#xff0c;最近又想着安装一下mamba试一下效果&#xff0c;可以配置环境就花了好长时间&#xff0c;主要还是一些概念没有弄明白&#xff0c;这里记录一下&#xff0c;方便以后查阅。 Nvidia显卡在深度学习应用中一些概念解释 显卡中一些名词的解释CUDA …

ZooKeeper集群环境部署

1. ZooKeeper安装部署 1.1 系统要求 1.1.1 支持的平台 ZooKeeper 由多个组件组成。一些组件得到广泛支持&#xff0c;而另一些组件仅在较小的一组平台上得到支持。 客户端是 Java 客户端库&#xff0c;由应用程序用于连接到 ZooKeeper 集群。 服务器是在 ZooKeeper 集群节点…

服务器主要有什么用途?什么情况下需要服务器?

服务器主要用于在网络中提供各种服务和资源。它们是现代信息技术基础设施的核心组成部分&#xff0c;用于存储、处理和管理数据&#xff0c;并为客户端设备&#xff08;如个人电脑、移动设备等&#xff09;提供所需的服务。以下是服务器的一些主要用途&#xff1a; 文件共享与存…

shell 三剑客-sed

sed 是Linux 系统一款非常强大的非交互式的文本编辑器&#xff0c;可以对文本进行增删改查操作&#xff0c;正则匹配文本内容。适合大文件编辑 sed 语法 sed 选项 ‘指令’ 文件 sed 选项 -f 包含sed指令的文件 文件 常用参数 -i&#xff1a;直接修改文件内容&#xff0c;而不…

用R语言运用 Shiny 包打造基于鸢尾花数据集的交互式数据可视化应用

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容&#xff0c;每篇文章都在 5000 字以上&#xff0c;质量平均分高达 94 分&#xff0c;看全文请点击下面链接&#xff1a; 1章4节&#xff1a;数据可视化&#xff0c; R 语言的静态绘图和 Shiny 的交互可视化演…

普通人看清房价走势的简单方法

研究了很多宏观方面的房价影响因素&#xff0c;还是很容易被看空和看多的房地产文章左右&#xff0c;也容易受到各种影响。 针对普通人而言&#xff0c;想要看清房价走势非常简单的一个方法&#xff0c; 你就看看你的工作状态【或者身边找工作的人多不多】 当你能挑工作的时…

老友记台词 第一季 第十三集 Friends 113(全英版)

文章目录 113 The One With the Boobies[Scene: Monica and Rachels, Chandler walks in and starts raiding the fridge. Then Rachel comes out of the shower with a towel wrapped round her waist, drying herself with another towel. Chandler and Rachel startle each …

CSC5613C 同步降压DC/DC

CSC5613C是一款同步降压型的DCDC变换器 IC&#xff0c;其输入电压为8~30V&#xff0c;具有良好的瞬态响应和环路稳定性。CSC5613C外围元器件极少&#xff0c;具有线补、过流保护和热保护功能。可通过调节FB电阻比例,来调整输出电压可用于快充。CSC5613C带载启动电流与其最大输出…

地下管线三维建模工具MagicPipe3D V3.5.2发布

经纬管网建模系统MagicPipe3D&#xff0c;本地离线参数化构建地下管网三维模型&#xff08;包括管道、接头、附属设施等&#xff09;&#xff0c;输出标准3DTiles、Obj模型等格式&#xff0c;支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析&…

WPF窗体动态效果

在浏览网页的时候&#xff0c;发现现在很多网页都采用这种效果。看起来很炫。 效果如下&#xff1a; 已经实现很久了&#xff0c;一直没写出来。今天突然想到&#xff0c;写出来分享一下 原理比较简单&#xff0c;就是在Window里面放一个MediaElement控件&#xff0c;播放视频…

shell命令行解释器—既陌生有熟悉的东西

今天做一个感性的认识来&#xff0c;用一个生活的例子。 你生活在有一条村子里面&#xff0c;在村的东边就是王婆&#xff0c;王婆呢&#xff1f;她主要做什么呢啊&#xff1f;她在村儿里面呢&#xff0c;也不种地啊&#xff0c;那她干什么呢&#xff1f;他主要做帮别人进行婚嫁…

人工智能时代,网络安全公司F5如何提高防护效能?

随着AI推动的应用和API数量迅速增长&#xff0c;企业面临着日益严峻的安全挑战&#xff0c;亟需采取有效措施来应对。AI正将数字体验推向一个全新的高度&#xff0c;它通过分布式部署数据源、模型和服务在企业内部、云端和边缘计算环境中&#xff0c;并依靠不断扩展的API网络实…

旋转字符串 | LeetCode-796 | 模拟 | KMP | 字符串匹配

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f579;️KMP算法练习题 LeetCode链接&#xff1a;796. 旋转字符串 文章目录 1.题目描述&#x1f351;2.题解&#x1fad0;2.1 暴力解法&#x1fad2;2.2 模拟…

Go调度器

线程数过多,意味着操作系统会不断地切换线程,频繁的上下文切换就成了性能瓶颈.Go提供一种机制 可以在线程中自己实现调度,上下文切换更轻量,从而达到线程数少,而并发数并不少的效果,而线程中调度的就是Goroutine 调度器主要概念: 1.G:即Go协程,每个go关键字都会创建一个协程…

opencv基础的图像操作

1.读取图像&#xff0c;显示图像&#xff0c;保存图像 #图像读取、显示与保存 import numpy as np import cv2 imgcv2.imread(./src/1.jpg) #读取 cv2.imshow("img",img) #显示 cv2.imwrite("./src/2.jpg",img) #保存 cv2.waitKey(0) #让程序进入主循环(让…

Kubernetes/K8s集群1.23.6搭建

1 集群规划 HostnameIP角色centos702192.168.131.102mastercentos704192.168.131.104nodecentos705192.168.131.105node 2 安装步骤 初始操作和安装基础软件每个节点都要执行。 2.1 初始操作 2.1.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld2.1.…

单元训练06:独立按键的扩展应用

蓝桥杯 小蜜蜂 #include "stc15f2k60s2.h"// 定义LED打开 #define LED(x) \{ \P0 x; \P2 P2 & 0x1f | 0x80; \P2 P2 & 0x1f; \}// 以位数来定义第1、2至6个灯&#xff0c;注意&#xff…

发两张Pop!_OS 24.04-alpha版本截图

发两张Pop!_OS 24.04-alpha版本截图

《Linux运维总结:基于x86_64架构CPU使用docker-compose一键离线部署etcd 3.5.15容器版分布式集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面对不同的客户部署业务系统&#xff0…