ios 使用window.location.href 不能跳转微信短链处理过程以及解决方法

需求背景:

        由h5提供页面,通过后台请求微信api生成对应的schemal短链,该h5页面嵌入到原生的ios以及安卓app上,当用户点击后通过短连接跳转到其他小程序中

以下为生成微信scheme代码示例,生成后短链为:weixin://dl/business/?t=l77aMn7aZF 这种

 /***  生成短连接* @param data* @return*/public static String getUrlScheme(JSONObject data) {try {log.info("==>获取小程序跳转地址,mchnt:{}", data);String appId = data.getString("appId");String secret = data.getString("secret");String accessToken = getAccessToken(appId, secret);return generateWechatScheme(accessToken, data);} catch (Exception e) {log.error("==>获取小程序跳转地址失败", e);throw new FuiouException("5022","获取小程序跳转地址失败");}}/*** 向微信服务端请求生成小程序 scheme*/public static String generateWechatScheme(String accessToken, JSONObject data) {CloseableHttpClient client = HttpClientUtil.createClient();String url = "https://api.weixin.qq.com/wxa/generatescheme?access_token=" + accessToken;HttpPost request = new HttpPost(url);request.setHeader("Content-Type", "application/json; charset=utf-8");String path = data.get("path").toString();String queryStr = data.get("queryStr").toString();String env_version = data.get("env_version").toString();// 构建请求体 JSONString requestBody = "{\"jump_wxa\":{\"path\":\"" + path + "\",\"query\":\"" + queryStr+ "\",\"env_version\":\"" + env_version+ "\"},\"is_expire\":false,\"expire_type\":1,\"expire_interval\":" + 1 + "}";request.setEntity(new StringEntity(requestBody, StandardCharsets.UTF_8));log.info("==>调用微信generatescheme接口,request body:" + requestBody);String response = HttpClientUtil.executeAndClose(client, request);log.info("==>调用微信generatescheme接口,response:" + response);JSONObject jsResp = JSONObject.parseObject(response);String openlink = jsResp.getString("openlink");log.info("==>获取到的微信小程序scheme:" + openlink);return openlink;}/*** 获取 access_token*/private static String getAccessToken(String appId, String secret) {String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + secret;CloseableHttpClient client = HttpClientUtil.createClient();HttpGet request = new HttpGet(url);String response = HttpClientUtil.executeAndClose(client, request);log.info("==>获取微信accessToken,response:" + response);JSONObject jsResp = JSONObject.parseObject(response);String accessToken = jsResp.getString("access_token");return accessToken;}

所遇到问题:

        短链如:weixin://dl/business/?t=l77aMn7aZF

        通过短链在前端利用js  window.location.href = weixin://dl/business/?t=l77aMn7aZF 进行跳转,在安卓上面能正常跳转,但是ios无法跳转,且没有反应

解决问题思路

        1、检查schema 是否正确,在ios真机测试也是可以跳;排除

        2、将window.location.href 替换为 window.location  以及换为 windos.open(xx) 等多种方式均不可行;

       3、怀疑是h5页面的meta 写的有问题,随即替换为meta 信息,进行测试,还是不行;

       4、本来都准备放弃,让ios提供一个原生方法,自己这边判断如果是ios就调用原生方法进行跳转,附一段js ios 判断代码

function isIos(){var u = window.navigator.userAgent;var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);return     isiOS;
}

       5、这时候经同事提醒,将链接放到其他页面,看是否可跳转,然后将链接放到首页测试是否可以跳转,这时候神奇的事情发生了,竟然ios 能正常跳了,同样是 window.location.href 

     6、拿到h5页面开始分析首页和2级页面的区别,发现首页没有无层级关系,而二级目录有一个ifream页面,以下为二级页面

    

最终结局方案

        经过以上分析后得知,window.location.href 不能跳出父框架,因为需要唤起小程序,所以需要跳出ifream ,但是安卓没问题,可能是语法的限制,最终知道解决方案

window.top.location.href = xx 微信的短链     及可正常跳转

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

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

相关文章

Azure[Sky] Dynamic Skybox

Azure[Sky] Dynamic Skybox是一个完整而稳健的天空系统,它可将你的项目提升大到其他层次。 Azure[Sky] 不仅适合使用现实图片的项目,事实上,该系统用在风格化图片的项目也很不粗,甚至效果更好。使用 Azure,每种风格都能实现最佳效果。 性能: 在开发此资源的过程中,性能是…

【Android】属性动画

在属性动画出现之前,Android 系统提供的动画只有帧动画和 View 动画。View 动画我们都了解,它提供了 AlphaAnimation、RotateAnimation、TranslateAnimation、ScaleAnimation 这4种动画方式,并提供了 AnimationSet 动画集合来混合使用多种动画…

35. 【Linux教程】Linux 修改用户组

前面小节介绍了如何添加用户组,本小节介绍如何给已经添加的新用户组修改信息,从 /etc/group 文件信息可以看到,用户组的信息比用户信息项少,和 usermod 命令类似,用户组的信息可以使用 groupmod 命令修改。 1. groupmo…

为了董宇辉,老婆跟我打起来了!写下一份深刻检讨

两个月前,因为讨论董宇辉小作文事件,跟老婆吵起来了。起因就为了两句话,写了这份检讨!给大家分享一下。 老婆在网上刷了两晚关于董宇辉小作文的视频,一直为董宇辉喊冤、打抱不平。起初,我跟老婆的想法&…

怎样消除视频上的字幕和文字?3个方法值得推荐

怎样消除视频上的字幕和文字?消除视频上的字幕和文字不仅是一个常见的需求,更是一个对视频内容质量提升的关键步骤。特别是在处理从网络下载的带有水印或标识的视频时,这些额外的文字和信息往往会干扰观众的观看体验,甚至可能影响…

【数据结构】顺序表和链表的对比,在各种情况下如何选择

顺序表详细内容: 【数据结构】线性表 顺序表(动态、静态分配,插入删除查找基本操作)解析完整代码 单链表详细内容: 【数据结构】单链表解析完整代码(插入、删除、尾插法、头插法、按值和按位查找、前插和后…

IDEA开发环境的安装与编写第一个程序

1.下载 IDEA(全称IntelliJ IDEA)是用于Java程序开发的集成环境(也可用于其他语言),它在业界被公认是最好的Java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代…

Mamba与MoE架构强强联合,Mamba-MoE高效提升LLM计算效率和可扩展性

论文题目: MoE-Mamba: Efficient Selective State Space Models with Mixture of Experts 论文链接: https://arxiv.org/abs/2401.04081 代码仓库: GitHub - llm-random/llm-random 作为大型语言模型(LLM)基础架构的后…

新一代科学计算与系统建模仿真平台MWORKS 2024a震撼发布:产品强势进化,更新亮点速览!

2月25日,同元软控成功举办MWORKS 2024产品发布会,会上公布了新版MWORKS的设计理念、关键技术、版本亮点、产品特性以及重大改进。当前,科学计算与系统建模仿真平台MWORKS 2024a已正式上线,开放下载。 MWORKS已成为全球第4个完整的…

C# 高阶语法 —— Winfrom链接SQL数据库的存储过程

存储过程在应用程序端的使用的优点 1 如果sql语句直接写在客户端,以一个字符串的形式体现的,提示不友好,会导致效率降低 2 sql语句写在客户端,可以利用sql注入进行攻击,为了安全性,可以把sql封装在…

嘉立创专业版导入SW模型的板框

1、SW新建一个需要的模型,例如下图, 2、点击另存为.dxf 文件(是.dxf文件) 3、选择要保存模型的视图,如上视图,确定后出现上视图板框形状,然后保存即可。 4、打开嘉立创,点击文件——…

整数编码【华为OD机试-JAVAPythonC++JS】

题目描述 实现一种整数编码方法,使得待编码的数字越小,编码后所占用的字节数越小。 编码规则如下: 编码时7位一组,每个字节的低7位用于存储待编码数字的补码 字节的最高位表示后续是否还有字节,置1表示后面还有更多的字节&#xf…

日志系统项目实现

日志系统的功能也就是将一条消息格式化后写入到指定位置,这个指定位置一般是文件,显示器,支持拓展到数据库和服务器,后面我们就知道如何实现拓展的了,支持不同的写入方式(同步异步),同步:业务线程自己写到文…

万卡集群:字节搭建12288块GPU的单一集群

文章目录 论文Reference 论文 MegaScale: Scaling Large Language Model Training to More Than 10,000 GPUs 论文链接:https://arxiv.org/abs/2402.15627 从结构上讲,网络是基于Clos的“胖树”结构。其中一个改进是在顶层交换机上把上行与下行链路分开&…

三、《任务列表案例》前端程序搭建和运行

本章概要 整合案例介绍和接口分析 案例功能预览接口分析 前端工程导入 前端环境搭建导入前端程序 启动测试 3.1 整合案例介绍和接口分析 3.1.1 案例功能预览 3.1.2 接口分析 学习计划分页查询 /* 需求说明查询全部数据页数据 请求urischedule/{pageSize}/{currentPage} 请…

stm32触发硬件错误位置定位

1.背景 1. 项目中,调试过程或者测试中都会出现程序跑飞问题,这个时候问题特别难查找。 2. 触发硬件错误往往是因为内存错误。这种问题特别难查找,尤其是产品到了测试阶段,而这个异常复现又比较难的情况下,简直头疼。…

初学JavaScript总结

0 JavaScript html完成了架子,css做了美化,但是网页是死的,需要给他注入灵魂,所以接下来需要学习JavaScript,这门语言会让页面能够和用户进行交互。JavaScript又称为脚本语言,可以通过脚本实现用户和页面的…

Programming Abstractions in C阅读笔记:p306-p307

《Programming Abstractions in C》学习第75天,p306-p307总结,总计2页。 一、技术总结 1.Quicksort algorithm(快速排序) 由法国计算机科学家C.A.R(Charles Antony Richard) Hoare(东尼.霍尔)在1959年开发(develop), 1961年发表…

Mac 制作可引导安装器

Mac 使用U盘或移动固态硬盘制作可引导安装器(以 Monterey 为例) 本教程参考 Apple 官网相关教程 创建可引导 Mac OS 安装器 重新安装 Mac OS 相关名词解释 磁盘分区会将其划分为多个单独的部分,称为分区。分区也称为容器,不同容器…

VR虚拟现实技术应用到猪抗原体检测的好处

利用VR虚拟仿真技术开展猪瘟检测实验教学确保生猪产业健康发展 为了有效提高猪场猪瘟防控意识和检测技术,避免生猪养殖业遭受猪瘟危害,基于VR虚拟仿真技术开展猪瘟检测实验教学数据能大大推动基层畜牧养殖业持续稳步发展保驾护航。 一、提高实验效率 VR虚…