卡片跳转快应用指定页面,如何点返回直接退出快应用回到卡片
问题现象:在快应用已经打开A页面的情况下,此时若从卡片(或其他媒介)跳转至快应用指定页面B,点击左上角返回键,退出页面顺序是B-A-卡片,无法一键直接返回卡片(或其他媒介)。
需要实现的场景:在快应用已经打开A页面的情况下,从卡片(或其他媒介)跳转至快应用指定页面B,点击左上角返回键能够一键退出快应用,直接返回卡片(或其他媒介)。
问题分析
上述的问题现象是由于页面采用了默认的启动模式standard,"standard"模式时会每次打开新的目标页面(多次打开目标页面地址时会存在多个相同页面),导致页面栈中会依次缓存页面A,B,退出时页面会依次出栈,无法一键返回。这里建议用户从卡片跳转至快应用时,使用动态声明的方式指定页面B的启动模式为clearTask即可解决。指定clearTask时,会直接清除原先的页面A,打开页面B,如此页面栈中只有页面B存在,返回时即可直接退出快应用。
解决方法
卡片跳转快应用示例代码(采用deeplink链接):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < meta http-equiv = "X-UA-Compatible" content = "ie=edge" > < title >快应用测试</ title > </ head > < body > < a href = "hwfastapp://com.huawei.hello1/Test?___PARAM_LAUNCH_FLAG___=clearTask" >使用hwfastapp打开</ a > < br > < br > < a href = "hap://app/com.huawei.hello1/Test?___PARAM_LAUNCH_FLAG___=clearTask" >使用hap打开</ a > </ body > </ html > |
卡片跳转的快应用目标页面(根据当前页面栈的数量可以发现始终只有一个页面):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
< template > < div class = "container" > < text >___PARAM_LAUNCH_FLAG___=</ text > < text >{{taskflag}}</ text > < text >当前页面栈的数量</ text > < text >{{length}}</ text > </ div > </ template > < style > .container { flex-direction: column; align-content: center; align-items: center; justify-content: center; } text { margin-bottom: 50px; } </ style > < script > import router from '@system.router'; export default { data: { // The default is the local app internal image photoUri: '/Common/logo.png', taskflag:'', PARAM_LAUNCH_FLAG:'', length:'' }, onInit() { this.$page.setTitleBar({ text: 'deepLink' }) var that=this; that.taskflag=this.PARAM_LAUNCH_FLAG; // 调用getPages方法 let pages = router.getPages() // 由于获得的值是一个JSON数组,所以直接打印是打印不出来的,可以使用下面的方法来打印 console.log("tag", this.printJSONArray(router.getPages())); that.length= router.getLength(); console.log("pages' length = "+that.length); }, printJSONArray(array) { let result = "" const suffix = ", " Array.isArray(array) && array.forEach((element, index) => { result = result + JSON.stringify(element) + (index === array.length-1 ? "" : ", ") }) return result } } </ script > |
建议与总结
1. 页面启动模式有两种配置方式,一种是在manifest文件中静态声明,一种是动态传参声明,建议使用动态模式,根据自己需要进行配置,静态声明的方式适用于单一固定场景,无法灵活调整。
参见文档:
https://developer.huawei.com/consumer/cn/doc/development/quickApp-References/quickapp-startupmode
2.deeplink文档:
https://developer.huawei.com/consumer/cn/doc/development/quickApp-Guides/quickapp-develop-deeplink
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0201441178593350400?fid=18
原作者:Mayism
相关文章
- AI应用说-人工智能落地智慧农场
- 连续五年国产第一,这家企业的应用交付产品是如何做到的?
- kubernetes 【组件】ingress 如何通过域名访问您的应用
- 【干货】美国视频广告生态和产品应用创新
- 《企业大数据系统构建实战:技术、架构、实施与应用》一3.2 如何选择解决方案
- [转]docker入门(利用docker部署web应用)
- python数字图像处理---噪声的应用
- 【快应用】小程序转快应用如何退出整个快应用
- 【快应用】如何获取标题栏高度
- 【快应用】如何实现小程序转快应用之间跳转
- 【AGC】如何创建自定义应用内消息
- 【AGC】如何在iOS上集成华为AGC应用内消息
- 如何用华为Scene Kit 8步实现AR放置应用
- HarmonyOS应用开发学习路线
- 《iOS 9应用开发入门经典(第7版)》——第2章,第2.6节作业
- 「基于Python技术的智慧中医商业项目」Django后端主页应用设计
- 数据库原理及应用第7章课后习题答案
- 浅析Svelte介绍了解、如何看待 svelte 这个前端框架、svelte评测结论(存在一个阈值大小优势消失、适用简单应用场景又想要数据驱动方式)
- 不刷新网页修改url链接(history.pushState和history.replaceState新增、替换历史记录用法介绍)、popstate玩转浏览器历史记录介绍、如何触发popstate事件、popstate事件的应用场景、history.state查看当前页面数据介绍
- 设计模式-单例模式及应用场景
- 【快应用】快应用用户协议、隐私政策内容中可以多次跳转,点击返回未能返回上一级页面,该如何处理?
- 【快应用】如何去掉快应用页面的menuBar
- 【快应用】text组件里的文字很多,旁边的div样式会被拉伸如何解决
- 使用 IntraWeb (1) - 先测试如何部署为 Asp.Net 的应用
- U-Net: 卷积网络在生物医学图像分割中的应用
- OA系统选型指南:看物业系统如何深度应用OA办公系统
- 应用数据难互通 如何打破小微企业“信息壁垒”?