mPaaS-H5导航栏动态化修改

简介: 金融级移动开发平台 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;

}




相关文章
|
3月前
|
小程序 网络安全 API
mpaas小程序问题之原生导航栏返回拦截如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
57 0
|
移动开发 运维 容器
mPaaS-H5导航栏定制化
金融级移动开发平台 mPaaS(Mobile PaaS)为 App 开发、测试、运营及运维提供云到端的一站式解决方案,能有效降低技术门槛、减少研发成本、提升开发效率,协助企业快速搭建稳定高质量的移动应用。其中很多业务在接入H5容器后都会对容器的导航栏进行深度定制,本文旨在通过不同实际场景的描述,供业务参考使用。
431 0
mPaaS-H5导航栏定制化
|
2月前
|
移动开发 监控 小程序
mPaaS常见问题之音视频通话微信小程序通话界面录制为画中画模式如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
29 0
|
3月前
|
缓存 小程序 Android开发
mPaaS问题之更改包名之后就进不了小程序如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
68 1
|
5月前
|
Web App开发 移动开发 小程序
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,显示“网络不给力,请稍后再试”,预发内网版本不能使用,线上版本可以正常使用,这个是什么原因啊,是某些参数没有配置吗,还是说是一些参数改错了?
63 2
|
2月前
|
移动开发 安全 小程序
mpaas常见问题之小程序容器,跑起来后一直提示 "网络不给力, 请稍后再试"如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
24 0
|
3月前
|
小程序 Android开发 iOS开发
mPaaS问题之Ios调小程序报错如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
46 0
mPaaS问题之Ios调小程序报错如何解决
|
3月前
|
小程序 安全 算法
mPaaS问题之使用小程序传参数报错如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
46 2
|
小程序
|
小程序 前端开发 Shell
接入 mPaaS 小程序并实现启动 iOS 版| 学习笔记
快速学习接入 mPaaS 小程序并实现启动 iOS 版。
566 0
接入 mPaaS 小程序并实现启动 iOS 版| 学习笔记