CCMobile与安卓、IOS集成过程中的问题与解决方案

前言:

CCMobile(2019版本)是CCFlow&JFlow 的一款移动端审批的产品。系统基于mui框架开发,是一款可以兼容Android与IOS的移动端工作流审批系统。由于CCMobile仅仅局限于移动端的流程审批,所以在其他办公功能方面很少,这时可能就需要在源码上开发或者与其他APP进行集成。

由于Mui是一款h5的框架,并不是原生的,所以在与原生APP集成时,会出现一些问题,主要集中在附件上传下载、屏幕兼容等。本文章,将具体描述与其他APP进行集成时出现的问题以及解决方法。

与IOS进行集成

1.主要问题汇总

与IOS进行集成时,主要有3个问题,即:返回(关闭)、全面屏与刘海屏样式兼容、附件上传与下载。

2.返回(关闭)

IOS操作系统不同于Android,不像Android具有back键。Android点击back键时,可以顺序返回,直到返回首页。IOS则没有,如果从原生跳转到CCMobile,IOS是不可能在CCMobile中返回到APP首页的,只能结束APP,重新打开。所以,我们在CCMobile的首页中,添加返回(关闭)按钮,点击后,可以关闭CCMobile,直接返回到APP指定的页面。

在CCMobile中,我们约定了一个返回(关闭)的调用方法,通过调用IOS原生方法,实现关闭(返回),调用代码如下:

window.webkit.messageHandlers.backAction.postMessage("backActionStr");

这句代码的意思调用IOS原生的backAction方法,参数是backActionStr,这个参数没有具体含义,只是为了方便判别。IOS原生的backAction方法就是关闭CCMobile,跳转到指定页面的方法,代码参考上图中红色框标识1。

下图中的 x 按钮,就是关闭(返回)。

3. 全面屏与刘海屏样式兼容

包括Android手机在内,绝大部分的手机都有全面屏与刘海屏,两者的样式区别就是刘海屏比全面屏的顶部,凹下去一块,如果按照全面屏的显示样式来说,CCMobile没什么问题,但是遇到刘海屏,CCMobile的顶部,就会被盖住一部分。

为了解决这样的情况,CCMobile没有为具体机型制定样式,而是在IOS代码中增加判断和修改,如果是刘海屏的机型,增加了整个CCMobile到顶部的距离。

IOS代码如上图红色框标识2所示。

4.附件上传与下载

H5的附件上传,需要在IOS原生中将相关权限开放,否则H5是无法调用手机相关功能的。如下图:

附件下载,由于在流程中上传的附件上传到服务器中,因此在手机端进行附加下载时,需要将服务器中的附件信息提供给手机,才能供手机下载。

因此,我们在这个地方,也约定了一个下载的方法名称,setLoadUrl。

window.webkit.messageHandlers.setLoadUrl.postMessage(Url);

IOS原生代码中,需要添加这个setLoadUrl方法,参数是附件的url地址,IOS根据URL进行下载。具体下载代码如上图红框标识3所示。

与安卓(Android)进行集成

1. 主要问题汇总

与IOS不同,CCMobile对安卓的支持相对好一些,有一些功能为了兼容IOS,做了特殊处理,因此在展现方面,两者有所不同,比如:选择器(下拉选择框)。

第一张图为安卓展示效果,第二张图为IOS显示效果。

虽然安卓不存在IOS返回(关闭)的问题,但是在集成时也存在全面屏与刘海屏样式兼容、附件上传与下载两个问题。

安卓的屏幕兼容问题,与IOS的解决思路一样,在安卓原生中,判断机型,自动计算并设置CCMobile到手机状态栏的具体距离,此处就不再详细说明了。下面将具体讲解附件上传与下载的集成问题。

2. 附件上传

mui的窗口界面采用的webview模块,因此在webview中带有 input file的控件时,在手机端中是无法点击的,因此,无法达到上传附件,并且也不会调动手机相机的操作。

为了解决这个问题,在安卓原生中需要做以下操作:

第一步:重写WebChromeClient。

第二步:监听ValueCallback。

第三步:webview要添加相应的设置。

第四步:创建onActivityResult。

具体代码参考:https://blog.csdn.net/shuaiyou_comon/article/details/76262303

3.附件下载

安卓的附件下载,与IOS的附件下载设计思路一样,需要在安卓原生中,增加一个下载方法,供CCMobile使用。

第一步,增加下载方法,代码参照如下:

第二步,方法声明,CCMobile可以使用原生代码进行调用。

CCMobile中调用原生接口的代码:

window.Android.setAttachmentUrl(Url);

setAttachmentUrl是原生下载的方法名,附件的url是参数。

驰骋工作流引擎-CCMobile与安卓、IOS集成过程中的问题与解决方案的更多相关文章

  1. 驰骋工作流引擎与jFinal集成版本2.0

    驰骋工作流引擎与jFinal集成版本2.0 发布说明 关键字: 驰骋工作流程快速开发平台 工作流程管理系统java工作流引擎. 使用协议:GPL. 关于JFinal: https://www.jfin ...

  2. 驰骋工作流引擎 -CCBPM如何自动升级

    关键词:工作流引擎自动升级   工作流自动升级升级步骤设置1,CCBPM把更新分成三类, 应用程序代码更新.数据表结构更新.数据更新.2,CCBPM在您登录流程设计器时自动判断当前的版本与数据库版本是 ...

  3. 驰骋开源的asp.net工作流程引擎java工作流 2015 正文 驰骋工作流引擎ccflow6的功能列表

    关键词: 驰骋工作流引擎   ccflow的功能列表   工作流功能列表  表单引擎功能列表 我们工作流引擎ccflow6重构之后对功能做了一些调整,要想快速了解ccbpm的功能,可以以下面列表为准 ...

  4. 驰骋工作流引擎ccflow-ccbpm工作流引擎sdk表单装载逻辑处理注意事项

    cbpm工作流引擎sdk表单装载逻辑处理注意事项 关键字:驰骋工作流引擎 sdk表单 装载接口调用   说明:如果您要采用ccbpm的sdk表单开发,在表单 加载前您需要调用一个接口来获得当前节点的信 ...

  5. 驰骋工作流引擎-ccflow单据模式介绍与使用

    Ccflow单据模式 关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎.  表单引擎  表单单据模式增删改查   应用场景: 一些客户在使 ...

  6. ios逆向过程中lldb调试技巧

    在ios逆向过程中,善于运用lldb,会给逆向带来很大的方便 一般的命令: 1.image list -o -f  看看各个模块在内存中的基址 2.register read r0  读取寄存器r0的 ...

  7. 驰骋工作流引擎 -Webservice接口说明文档

      关键词:工作流引擎接口说明  驰骋工作流接口参数详解 接口 LocalWSI /** * 待办 * @param userNo 用户编号 * @param sysNo 系统编号,为空时返回平台所有 ...

  8. 驰骋工作流引擎-底层开发API 说明文档

    驰骋工作引擎-底层开发API 登录与门户API 首先要进行代码集成与组织机构的集成 其次在自己的系统登录界面,登录成功后要执行ccbpm的框架登录. 所谓的登录就是调用ccbpm的登录接口,如左边的代 ...

  9. 驰骋工作流引擎ccflow-流转自定义功能使用说明

    流转自定义功能使用说明 关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 节点跳转 节点流转自定义 应用背景: 有一些流程在运行过程中是 ...

随机推荐

  1. 构建自己的PHP框架(ORM)

    完整项目地址:https://github.com/Evai/Aier 我们选择 Laravel 的 illuminate/database 作为我们的 ORM 包. 在本系列教程里,每一个 Comp ...

  2. React学习(1)——constructor

    constructor(props) { super(props); this.state = { orderNo: "001", wid: 6 }; } constructor: ...

  3. 安装Eclipse完PyDev插件中没有出现

    假设你是在Window7在环境搭建.请确保您使用以管理员身份运行Eclipse. PyDev插件安装后没有显示是由于PyDev的执行须要Java7,能够通过升级JDK的版本号来完毕,而且配置环境变量( ...

  4. WPF中画虚线

    原文:WPF中画虚线 在WPF中,画线的方法十分简单,只要声明一个Line然后添加到指定的位置就可以了,但Line并不仅仅只能画一条直线,还可以对直线进行修饰. 1.Line.StrokeDashAr ...

  5. Boost总结汇总

    从开始接触Boost已经有好几年了,而对它的掌握却难言熟悉,有对它部分的源代码的剖析也是蜻蜓点水.有时间一点点梳理一下吧. 1. 概述 [Boost]C++ Boost库简介[Boost]C++ Bo ...

  6. 没必要看源码。。把文档学通就已经牛逼了(我们大多还是在应用层,还达不到研究的程度。附class与examples大全链接)

    [学霸]深圳-鑫 2017/7/11 13:54:07只是学习怎么用QT的话,不用看源码.看帮助文档就很好要学习编码风格与思路,就看看源码 [学神]武汉-朝菌 2017/7/11 13:54:39没必 ...

  7. javascript控制rem字体大小

    摘要:在写响应式H5页面的时候,我常常会用rem字体,为了兼容多个分辨率的设备,需要写多个@media标签,太麻烦并且不够精致,尤其是移动端的页面往往达不到我想要的效果,后来就用js替代了css的@m ...

  8. 【全面解禁!真正的Expression Blend实战开发技巧】第三章 从最常用ButtonStyle开始 - TextButton

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第三章 从最常用ButtonStyle开始 - TextButton 在实际项目中,使用blend做的最多的一定是各种自定义But ...

  9. 图像滤镜艺术---Photoshop实现Instagram之Sierra滤镜

    原文:图像滤镜艺术---Photoshop实现Instagram之Sierra滤镜 本文介绍PS实现Instagram中的Sierra滤镜,内容如下: 先看下效果图: 下面是具体实现步骤: 1. To ...

  10. mysql索引创建&查看&删除

    1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有 ...