- 博客(16)
- 收藏
- 关注
原创 地图寻路搜索
项目中集成了高德开放平台地铁图 JS API 传送门,经过长期的功能迭代,甲方提出了各种定制化需求来优化体验,而使用这种第三方SDK就很难满足;因此如果自己开发一套地铁线路图引擎,从功能和体验上达到完全可控,可完美满足用户需求;技术分析画布大小,元素坐标点确认,需要开发一套管理台,标记地图大小、元素坐标位置、元素连接关系等,在此不多赘述线路图绘制,这个实现方式有很多,移动WEB通过纯JS ...
2020-01-27 11:27:35 1867
原创 仿高德地铁图 JS SDK
仿高德地图 JS SDK 仓库地址程序目录.├── README.md #说明文档├── dist│├── bscroll.js #better-scroll库├── gy-subway-data.json #地铁线路图数据├── gy-subway-demo.html #启动页├── sdk│└── gy-subway-sdk.js #核心逻辑接入方式<scrip...
2020-01-27 11:22:32 728
原创 RN实现百度地图、线路规划、POI检索
因公司甲方要求,需要在APP中直接集成百度地图公交路径规划功能,方便用户出行;当然用户也可以直接用百度、或高德去查询,但作为交通出行类的工具类型APP,如果能直接提供辅助型的核心功能,再配合运营工具,不仅能提高用户粘性,还能对用户查询使用习惯进行分析。功能流程用户搜索目标位置,从当前位置进行公交线路查询,提供详细的换乘信息和地图线路绘制。UI上面的交互比较复杂,不仅地图上要绘制线路,前景UI详...
2020-01-27 11:42:33 1026 1
原创 codepush热更新包减小体积-图片资源优化
场景codepush更新包需要上传bundle+assets,当需要上传资源包体积比较大的情况下,会消耗大量用户流量且有下载失败风险,如出现紧急情况热更新下发率低下会造成极大的影响;那么如何减少更新包体积呢?改造方案如使用拆包方案,大部分情况下只上传业务bundle,体积大概在50k以下,拆包方案参考RN拆包解决方案(一) bundle拆分assets资源优化,出现大量素材资源的情况下需...
2020-01-27 11:41:46 993
原创 codepush支持多bundle更新重构
codepush实现原理梳理下关键节点前端获取serverURL、appVersion、deploymentKey请求serverURL查询deploymentKey对应的包是否需要更新,appVersion作为匹配条件(后续灰度发布可自行增加其他条件)服务端返回downloadUrl、packageHash(一组唯一迭代hash值,类似versionCode或者build号)请求d...
2020-01-27 11:40:40 805
原创 RN拆包解决方案(三) RCTBridge缓存
场景目前项目中RN模块已经改造成了拆包方式,每次在初始化的时候先加载common代码,然后进入相具体业务页面加载business代码,虽然business的代码只有几十k左右,但是没有预加载的情况下,等待加载完毕也需要一些时间,虽然是瞬间的,用户还是能感受到页面白屏情况;而且,在用户关闭页面后再次打开相同页面是需要重新创建RCTBridge的,没有复用之前的RCTBridge实例;因此,不妨考虑...
2020-01-27 11:39:59 1622
原创 RN拆包解决方案(二) bundle加载
前言本文跟随上一篇RN拆包解决方案(一) bundle拆分,已打出common.bundle和patch.bundle文件为前提,引入工程项目中iOS原生加载流程RCTBridge开放私有方法@interface RCTBridge (ReactExecuteScript)- (void)executeSourceCode:(NSData *)sourceCode sync:(BOOL...
2020-01-27 11:37:26 1196
原创 RN拆包解决方案(一) bundle拆分
前言本文是基于react-native 0.55, react 16.3.1版本展开目的减少业务包体积(app瘦身)节省热更新流量提升模块加载速度点击查看结构实现方式打公用包,包括react-native框架、code-push框架、常用第三方框架、rnlib代码等打全量bundle包全量包基于公用包打出差异包(业务包)共用包和业务包同时引入工程原生端预先加载共用包,...
2020-01-27 11:36:19 2260 1
原创 iOS代码混淆
目前公司产品线中存在大量功能类似的APP,按照模块化方式开发项目,核心模块业务代码是复用的,使用同一个开发者账号下iOS上架流程中有些APP在苹果机审过程中惨遭被拒的下场,通过更改部分页面UI效果也无济于事,于是采用代码混淆的方式也就是马甲包方案去绕过机审;功能分析二进制不同,图标,包名,工程名,代码,静态资源等的修改。差异化UI风格,产品功能,页面布局等的修改实现流程核心模块类名...
2020-01-27 11:17:19 1221 3
原创 iOS性能检测和优化
卡顿原因分析用户在使用APP的过程中,客户端要在持续60fps左右的帧率情况下才能保证流畅度,低于40fps就有明显的卡顿情况;那么在什么情况下才会导致帧率下降呢?我们都知道APP需要在主线程进行渲染操作,同时还有很多业务功能需要添加,当主线程中需要许多耗时任务的情况下就会阻塞主线程从而掉帧;要保证每一帧的渲染和业务功能在16.67ms内完成不会掉帧;那么如何进行优化呢?回到系统层面,主线...
2020-01-27 11:16:21 255
原创 UI组件模块设计思路
模块设计思路功能职责细分UI组件组件类型如何创建组件菜单获取菜单缓存管理菜单路由跳转组件流式布局下拉刷新动画自定义导航首页、我的业务广告组件UI组件组件如何设计?思路1 - UI组件中包含具体业务优点:快速完成功能,业务服务于UI缺点:业务耦合性太强,没有通用性,程序不好扩展思路2 - UI组件抽象化优点:类似于UI模板,没有具体业务,形态由外部状态...
2020-01-27 11:15:36 824
原创 jenkins + fastlane 持续化集成交付、OTA分发
jenkins项目中测试组专用服务器上安装jenkins方便持续集成和交付。jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台。安装流程请戳fastlane简单来说,以iOS应用发布流程为例,整个流程的各部分工作fastlane都能帮你完成。主要突出的几个组件:sigh:生成并下载开发者证书produce:...
2020-01-27 11:12:48 2822
原创 iconfont技术分享
提问提需求的人图标样式(颜色)要换?图标如何满足不同的分辨率以及清晰度?图标太多导致项目体积越来越大,如何瘦身?按钮状态切换只用一个图标,例如点击和松开,甚至更多的状态?用字体来代替图标 阿里iconfont轻量性:一个图标字体比一系列的图像(特别是在Retina屏中使用双倍图像)要小。一旦图标字体加载了,图标就会马上渲染出来,不需要下载一个图像。可以减少HTTP请求,还可以配...
2020-01-27 11:07:35 1703
原创 微信小程序技术分享
小程序是什么?官方称为"小程序",可理解为镶嵌在微信的App与订阅号、服务号和企业号属于同级体系。由此,小程序、订阅号、服务号、企业号形成了并行的微信生态四大体系。小程序优势性能比WebApp好无需安装,不占内存,在微信内即搜即用,使用成本相对于安装App来说降低了很多学习开发门槛低,前端技术+热更新调用微信推送,地图or定位,扫码,支付等多种服务应用场景横轴=需求刚性,...
2020-01-27 11:05:44 628
原创 灵活轻便的Table控件,适合复杂样式的内容排版
简洁高效的Table控件1.1.0正式版,适合复杂样式的内容排版,丰富的元素相关API技术特点无需继承自定义类,引入头文件UIViewController+GYTableView.h即可使用支持OC和Swift(混合)Section和Cell层次更加清晰,根据传入的Section数据结构内部已经全部实现Section和Cell相关delegate方法Cell实例可获得外部动态数据,索引...
2019-02-07 20:02:08 1133
原创 简洁高效的一套iOS列表框架GYTableViewController
之前做项目一直使用自己封装TableView框架,最近把他整理了下(不要脸的)开放出来。如果您用的比较爽的话请点击右上角的star关注下,也可以随时发送issues吐槽给我,我会随时发现并解决。 github仓库地址 欢迎互相交流学习,问题交流群群号:296406818如何开始项目技术特点安装方法框架用法代码结构GYTableBaseView.hGYTableViewCo...
2018-04-02 10:58:22 1067
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人