mPaaS-H5导航栏动态化修改

本文涉及的产品
mPaaS订阅基础套餐,标准版 3个月
简介: 金融级移动开发平台 mPaaS(Mobile PaaS)为 App 开发、测试、运营及运维提供云到端的一站式解决方案,能有效降低技术门槛、减少研发成本、提升开发效率,协助企业快速搭建稳定高质量的移动应用。其中很多业务在接入H5容器后都会对容器的导航栏进行深度定制,除了Native的定制化之外,还有很多场景是使用到jsapi的方式,通过jsapi实现导航栏的动态修改。本文旨在通过实际场景的描述,通过jsapi的方式,介绍jsapi下怎样动态修改导航栏,供业务参考使用。


一.背景

 金融级移动开发平台 mPaaS(Mobile PaaS)为 App 开发、测试、运营及运维提供云到端的一站式解决方案,能有效降低技术门槛、减少研发成本、提升开发效率,协助企业快速搭建稳定高质量的移动应用。其中很多业务在接入H5容器后都会对容器的导航栏进行深度定制,除了Native的定制化之外,还有很多场景是使用到jsapi的方式,通过jsapi实现导航栏的动态修改。本文旨在通过实际场景的描述,通过jsapi的方式,介绍jsapi下怎样动态修改导航栏,供业务参考使用。

二.内置JSAPI修改导航栏

1.修改导航栏标题

修改导航栏标题API:setTitle

AlipayJSBridge.call('setTitle', {

   title: 'H5设置标题',

});

AlipayJSBridge.call('setTitle', {

  subtitle: '副标题',

});

AlipayJSBridge.call('setTitle', {

   title: '标题',

   subtitle: '副标题',

});

2.修改导航右按钮

setOptionMenu 此API 有reset、title、icontype、icon 这 4 个属性有一个即可,属性的优先级:reset > title > icontype > icon。

AlipayJSBridge.call('setOptionMenu', {

 title : '按钮',

 redDot : '5', // -1 表示不显示,0 表示显示红点,1-99 表示在红点上显示的数字

 color : '#9951ffee', //字体颜色,必须以#开始 ARGB 颜色值

});

AlipayJSBridge.call('showOptionMenu');//强制刷新显示

AlipayJSBridge.call('setOptionMenu', {

 icon : 'https://pic.alipayobjects.com/e/201212/1ntOVeWwtg.png',

 redDot : '6', // -1 表示不显示,0 表示显示红点,1-99 表示在红点上显示的数字

});

AlipayJSBridge.call('showOptionMenu');//强制刷新显示

AlipayJSBridge.call('setOptionMenu',{

   // 显示时的顺序为从右至左

     menus: [{

       icontype: 'scan',

     },{

         icontype: 'add',

     }],

     override: true // 在需要设置多个 option 的情况下,是否保留默认的 optionMenu

});

AlipayJSBridge.call('showOptionMenu');//强制刷新显示

AlipayJSBridge.call('hideOptionMenu');//隐藏右侧按钮

3.修改导航栏背景色

修改设置导航栏背景色setTitleColor API,参数color、reset、resetTransparent。优先级reset > color > resetTransparent。

window.AlipayJSBridge && AlipayJSBridge.call("setTitleColor", {

 color: 16118569,

 reset: false // (可选,默认为 false,true 恢复默认导航栏颜色title 等,color等于无效)

});

window.AlipayJSBridge && AlipayJSBridge.call("setTitleColor", {

 reset: true // (可选,默认为 false,true 恢复默认导航栏颜色title 等,color等于无效)

});

AlipayJSBridge.call("setTitleColor", {

resetTransparent: true // 设置导航栏透明

});

注:此JSAPI设置背景色后会影响导航标题和按钮颜色,需要在自定义插件中监听kH5Event_Scene_NavigationBar_ChangeColor 并在监听事件中实现代码:

//禁止修改容器默认导航栏样式

[event stopPropagation];

4.其他修改

1.显示标题栏加载loading

AlipayJSBridge.call('showTitleLoading');

2.隐藏标题栏加载loading

AlipayJSBridge.call('hideTitleLoading');

展示效果:

三.自定义JSAPI修改导航栏

1.创建自定义JSAPI

1.创建 JSAPI 类:必须继承自 PSDJsApiHandler 基类。

2.为与容器默认提供的插件命名保持一致,创建的 JSAPI 类命名以 XXJsApi4 开头,其中 XX为自定义的前缀。

3.在 .m文件中,需重写方法 -(void)handler:context:callback:。当在H5前端调用此 JSAPI 时,会转发到此方法。

2.注册JSAPI

1.在自定义的 Plist 文件中注册此 JSAPI。

2.在 JsApis 数组下注册上一步创建的 JSAPI 类,注册的 JSAPI 是一个字典类型,包含以下两项内容,Key 分别为:jsApi 和 name。

名称

含义

jsApi

在 H5 页面中调用的 JSAPI 接口名。注意: 为防止自定义的 JSAPI 与容器内置 JSAPI 相互影响导致不可用,请给自定义 JSAPI 名加上前缀予以区分。

name

创建的 JSAPI 的类名。

3.自定义JSAPI代码实现

1.H5前端代码参考:

function setNativeTitle() {

   my_jsapi_call("setNativeTitle",{

       'title':'主题'

   });

}

               

function my_jsapi_call(apiName,params) {

   window.AlipayJSBridge && AlipayJSBridge.call(apiName,params,function(data){

       alert('调用结果'+JSON.stringify(data));


   });

}

2.原生端代码参考:

- (void)handler:(NSDictionary *)data context:(PSDContext *)context callback:(PSDJsApiResponseCallbackBlock)callback {

   [super handler:data context:context callback:callback];

   NSLog(@"+++++++%@",data);

   NSString *string = data[@"title"];

   //获取当前H5容器vc,通过VC内自定义修改导航栏

   YXH5WebVC *vc = (YXH5WebVC *)DTContextGet().currentVisibleViewController;

   vc.barView.title = string;

}




目录
相关文章
|
JSON 数据可视化 定位技术
【D3.js - v5.x】(7)绘制地图 | Geo布局 | 完整代码
【D3.js - v5.x】(7)绘制地图 | Geo布局 | 完整代码
1128 0
【D3.js - v5.x】(7)绘制地图 | Geo布局 | 完整代码
|
5月前
|
人工智能 自然语言处理 IDE
【HarmonyOS 5】鸿蒙CodeGenie AI辅助编程工具详解
1、CodeGenie是什么? CodeGenie (代码精灵)作为鸿蒙DevEco IDE自带的AI辅助编码工具。
275 0
|
3月前
|
传感器 机器学习/深度学习 监控
基于STM32的人体健康监测系统设计与实现(温度、心率、老人摔倒检测)【开源免费】
本文介绍了一个基于 STM32 微控制器 的健康监测系统,涵盖了 温度采集、心率监测、跌倒检测 等核心功能,并通过蓝牙实现数据传输与报警提醒。该系统在家庭养老、运动监控、医疗健康等场景具有广阔的应用前景。未来可以结合 AI+物联网 技术,进一步提升智能化和实用性。
610 12
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能的边界拓展:从理论到实践的飞跃####
本文探讨了人工智能(AI)技术的最新进展,特别是深度学习领域的创新如何推动AI从理论研究走向广泛应用。通过分析几个关键领域的实际应用案例,如医疗健康、自动驾驶和自然语言处理,本文揭示了AI技术的潜力及其对社会和经济的深远影响。文章还讨论了当前面临的挑战,包括伦理问题和技术瓶颈,并展望了未来的发展趋势。 ####
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
2951 7
|
9月前
|
机器学习/深度学习 人工智能 API
Aligner:自动修正AI的生成结果,北大推出残差修正模型对齐技术
介绍北大团队提出的 Aligner 模型对齐技术,通过学习对齐答案与未对齐答案之间的修正残差,提升大语言模型的性能。
398 28
|
11月前
|
存储 SQL Apache
Apache Doris 创始人:何为“现代化”的数据仓库?
3.0 版本是 Apache Doris 研发路程中的重要里程碑,他将这一进展总结为“实时之路”、“统一之路”和“弹性之路”,详细介绍了所对应的核心特性的设计思考与应用价值,揭晓了 2025 年社区发展蓝图
639 6
Apache Doris 创始人:何为“现代化”的数据仓库?
|
JavaScript
使用Vue+Textarea实现在文本内容变化时自适应高度
这篇文章提供了Vue 2和Vue 3中实现Textarea在文本内容变化时自适应高度的示例代码和方法。
1041 0
使用Vue+Textarea实现在文本内容变化时自适应高度
|
机器学习/深度学习 人工智能 算法
AI辅助医疗影像:提高诊断准确性
【10月更文挑战第2天】医学影像技术是现代医学诊断的关键手段,但传统方法依赖医生经验,存在误诊风险。AI辅助医疗影像通过自动化图像识别、疾病预测和辅助诊断决策,显著提升了诊断准确性与效率。利用深度学习、数据增强及迁移学习等技术,AI不仅能快速分析影像,还能提供个性化诊疗建议,并实时监测疾病变化。尽管面临数据质量、算法可解释性和伦理法律等挑战,但多模态影像分析、跨学科合作及VR融合等趋势将推动AI在医疗影像领域的广泛应用,助力实现更精准、高效的医疗服务。
|
消息中间件 Java Kafka
Kafka不重复消费的终极秘籍!解锁幂等性、偏移量、去重神器,让你的数据流稳如老狗,告别数据混乱时代!
【8月更文挑战第24天】Apache Kafka作为一款领先的分布式流处理平台,凭借其卓越的高吞吐量与低延迟特性,在大数据处理领域中占据重要地位。然而,在利用Kafka进行数据处理时,如何有效避免重复消费成为众多开发者关注的焦点。本文深入探讨了Kafka中可能出现重复消费的原因,并提出了四种实用的解决方案:利用消息偏移量手动控制消费进度;启用幂等性生产者确保消息不被重复发送;在消费者端实施去重机制;以及借助Kafka的事务支持实现精确的一次性处理。通过这些方法,开发者可根据不同的应用场景灵活选择最适合的策略,从而保障数据处理的准确性和一致性。
1140 9