iOS进阶专栏- 总目录(持续更新)
文章目录
- 引言
- I 、 网络
- 1.1 通信
- 1.2. IPC
- II 、支付解决方案
- 2.0 支付相关的基础知识
- 2.1 消息推送后台语言播报(包括app处于杀死状态)
- 2.2 收银app必备模块:收银台、电子签名
- 2.2.1计算器
- 2.2.2 电子签名
- 2.3、商户交易风控
- 2.4 处理用户输入内容(金额/手机号码等)
- 2.5 商品详情页
- 2.6 反馈页面
- 2.7 微信支付
- 2.8 封装银联接口协议
- 2.9 OCR
- 2.10 商户交易汇总表
- III、效率
- 3.1 架构模式
- 3.1.0 MVC、MVVM
- 3.1.1 链式编程
- 3.1.2 路由:接口控制app跳任意界面
- 3.2 持续集成
- 3.2.1 代码管理: CocoaPods
- 3.2.2 根据 debug / release 类型自动更改配置
- 3.3实用工具
- 3.3.1. 用户输入处理工具
- 3.3.2 图片压缩
- 3.3.3 提高开发效率的工具
- 3.4 封装SDK
- 3.4.1 自定义相机
- IV、 渲染
- 4.1 常用动画
- V、 解决方案汇总
- 5.1 布局
- 5.2 常用功能解决方案
- 5.2.1 蓝牙打印
- 5.2.2 本地化
- VI 、 app上架指南
- 6.1 上架流程指南
- 6.2 ASO
- see also
引言
欢迎大家来到#公众号:iOS逆向的《iOS进阶》专栏
本文列出学习大纲,同时这也可以作为大家学习《iOS进阶》这个专栏的索引。
文中的蓝字都是传送门,点击进入即可
I 、 网络
iOS网络请求指南
https://kunnan.blog.csdn.net/article/details/115175707
1.1 通信
- 进程间的实时通讯方案: local socket(解决扩展和容器应用的实时通讯问题)
1.2. IPC
iOS AppStore Search optimize【Inter process Communication】之 去掉对rocketbootstrap的Depends依赖
1、下载地址:https://download.csdn.net/download/u011018979/15744262
2、文章:https://kunnan.blog.csdn.net/article/details/114693546
3、目的:是想在自己的deb 自带rocketbootstrapd,避免每次部署都从bigBoss 源更新。
4、相关文章:iOS AppStore Search optimize【 ASO项目使用的技术】之 Inter process Communication By Rrocketbootstrap
————————————————
版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/z929118967/article/details/114694914
II 、支付解决方案
2.0 支付相关的基础知识
- 1、支付知识及调试测试技巧:【支付流程 & 预授权& 银行卡验证&反洗钱】2、安全设计Checklist(短信验证码、图形验证码、密码管理、身份验证、会话安全、敏感信息、接口安全)
2.1 消息推送后台语言播报(包括app处于杀死状态)
-
iOS NotificationServiceExtension实现VoiceBroadcast【app处于后台/被杀死的状态仍可进行语言播报】iOS12.1以上在后台或者被杀死无法语音播报的解决方案
-
iOS 实现消息推送退出登陆后无法收到推送功能【以极光推送为例子,退出登陆时删除别名的即可。】(递归设置和删除别名)
2.2 收银app必备模块:收银台、电子签名
2.2.1计算器
- 计算器: 表达式的精准计算(计算字符串数学表达式)MathStringExpression
iOS计算器:采用NSDecimalNumber 进行表达式的精准计算(计算字符串数学表达式)【案例:折扣计算器(完整demo源码)】
从csdn资源下载demo源码:https://download.csdn.net/download/u011018979/14038508
2.2.2 电子签名
-
电子签名上篇【核心原理: 旋转特定的屏幕】应用场景:采集电子签名,支持签名界面为横屏其余页面都是竖屏、清除重写、灵活控制提示语信息、以及查看商户协议等
-
电子签名下篇【 只旋转自己想要旋转的屏幕(内含demo源码)】 关键步骤:1、viewWillAppear设置横屏2、viewWillDisappear 进行设置竖屏
2.3、商户交易风控
- 商户交易风控之"限制境外定位" :【判断目标经纬度是否在大陆】
1、盗刷拒付风险
2、疑似欺诈、电诈、套现风险
3、赌博、异常大额、异常测试:
4、跨境风险


2.4 处理用户输入内容(金额/手机号码等)
-
iOS文本长度计算【中文占1,英文等能转ascii的占0.5】常常应用于对文本输入框的个数限制
-
iOS处理语言的强大工具CFStringTransform : 智能地处理用户的输入内容,经典应用场景【索引】
-
iOS用户输入处理之【从字符串中提取数字(手机号)】应用场景:登录界面“请输入手机号“文本框,对粘贴内容进行手机号码提取
-
iOS金额的格式转化处理
-
使用NSPredicate优化从数组搜索数据效率
2.5 商品详情页
- UICollectionView的自适应案例详解:【商品详情页】(核心原理:按照图片的原宽高比例进行显示图片全部内容,并自动适应高度)完整demo源码
1、原理文章:https://kunnan.blog.csdn.net/article/details/112976838
2、应用场景:商品详情页以及需要展示大量图片的界面
3、核心原理
3.1)按照图片的原来宽高比进行缩
3.2)UICollectionView的高度自适应
2.6 反馈页面
- iOS 监听物理截图来自动生成截图并跳转到反馈页面进行显示(截图内容包括系统的弹框视图UIAlertController和UIAlertView)
2.7 微信支付
- 开发能力说明文档(private)
关注公众号:【iOS逆向 】进一步交流
2.8 封装银联接口协议
iOS网络请求指南之 【封装银联接口协议】(提交和返回数据都为XML格式)案例:对接条码支付综合前置平台被扫支付订单申请退款(退款查询)
https://kunnan.blog.csdn.net/article/details/115084885
2.9 OCR
iOS13扫描证件&银行卡信息识别;身份证识别 (正反) ;矩形边缘识别 ;自定义证件相机 (含demo源码)
https://blog.csdn.net/z929118967/article/details/111197419
2.10 商户交易汇总表
使用tab滑块进行切换/筛选不同级别的代理商数据
III、效率
- 提高前后台联调效率
提前根据约定好的接口,使用Charles进行模拟数据
- 重复写的代码自动生成:
根据 JSON 自动生成 Model 文件
接口返回的Dto数据模型使用工具生成
- 优化启动耗时
- 提高线上问题发现和排查的效率
3.1 架构模式
- 代码组织的架构模式
MVC / MVVM (解耦和抽象)、组件化、路由
- 改变编写代码方式的架构
响应式编程、链式编程、单向数据流
3.1.0 MVC、MVVM
-
【MVC思想】(视图不依赖于具体的数据类型,而是依赖于遵守特定协议的数据源。M 和V 是不存在依赖关系。)
-
iOS MVVM(Model-View-ViewModel) 1、 数据绑定的实现方式(KVO、block、Delegate、Notification、RAC)2、RAC的信号机制
3.1.1 链式编程
- 【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)
磨刀不误砍柴功:编写代替自己工作的自动化工具
3.1.2 路由:接口控制app跳任意界面
- 运行时API应用:1、实现路由(接口控制app跳任意界面 )2、获取修改对象的成员属性3、动态添加/交换方法的实现4、属性关联

3.2 持续集成
- 自动化构建(重复做的事都应该自动化,以提高开发效率)
其中涉及代码管理(git / svn),编译流程,证书和签名机制,自动化测试,打包发布。
其中还会有一些自定义的自动化流程(自动生成代码,根据 debug / release 包类型自动更改配置)
3.2.1 代码管理: CocoaPods
-
CocoaPods 使用手册:1、基础应用 2、高级用法: podspec.json、tweak 集成CocoaAsyncSocket、采用
pod lib开发并打包iOS静态库 -
【采用
pod lib开发并打包iOS静态库(比我之前自己搭建的模板更方便)及利用iOS CocoaPods私有库实现组件化】 -
iOS代码管理之【Xcode Build版本号自增的解决方案】(通过配置脚本让xcode 在每次Build打包时自动对CFBundleVersion加一)
3.2.2 根据 debug / release 类型自动更改配置
- 发布模式关闭NSLog
3.3实用工具
3.3.1. 用户输入处理工具
-
iOS处理语言的强大工具CFStringTransform : 智能地处理用户的输入内容,经典应用场景【索引】
-
iOS用户输入处理之【从字符串中提取数字(手机号)】应用场景:登录界面“请输入手机号“文本框,对粘贴内容进行手机号码提取
3.3.2 图片压缩
- 【解决压缩之后图片模糊的问题】
3.3.3 提高开发效率的工具
-
iOS 效率工具【根据 JSON 自动生成 Model 文件(数据模型)】省去了复制粘贴的环节。支持 YYModel / MJExtension 的自动映射. 灵活拓展和定制(名字、头文件注解)
-
iOS进阶:【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)
磨刀不误砍柴功:编写代替自己工作的自动化工具
-
iOS测试:通过GPX文件修改经纬度信息(模拟iOS设备的位置)
-
iOS App thinning【( 通过 LinkMap、mach-o寻找优化点)】1、段迁移rename_section减小__TEXT 段大小(需关闭 Bitcode)2、查无用方法/类/宏/图
-

3.4 封装SDK
3.4.1 自定义相机
- 手持证件照相机:【拍身份证裁剪大小,截图截出所需大小】(带拍摄区域边框及半透明遮罩层)
- 1、iOS13 documentCameraViewController 扫描证件(demo源码)2、身份证识别 (正反) 3、矩形边缘识别 4、自定义相机: 加一个长方形的框框并裁剪身份证照片


IV、 渲染
4.1 常用动画
- iOS常用动画 【 定点缩放弹窗】利用锚点anchorPoint进行实现

- iOS Horizontal Popup View 【 横向(水平方向)弹出菜单视图】例子:商品列表支持弹出菜单进行
下/上架商品、打印商品价签、编辑商品信息、同步网店等操作popover
V、 解决方案汇总
5.1 布局
-
iOS UITableView reloadData之后导致cell中的控件失去焦点的解决方案:使用UITableView 的beginUpdates和endUpdates来修改Cell的高度;
-
Masonry进阶 :【MASConstraint的安装与移除】- 应用场景:灵活控制视图的展示与隐藏
例子:入库单详情界面未审核状态时展示审核按钮,否则隐藏审核按钮
- iOS上传图片【支持删除和添加】(使用UICollectionViewCell、UITableViewCell 及Masonry。采用MVVM实现。)

5.2 常用功能解决方案
5.2.1 蓝牙打印
-
iOS蓝牙状态的处理【蓝牙关闭及未授权的处理】
-
因app中的蓝牙功能隐蔽而导致上架被拒绝的解决方案
-
iOS 【打印价格标签的模板及打印小票的模版、 实现自动连接最近使用的打印机】 (针对佳博GP-2120TU型号) 包含完整的 demo 源码
- iOS蓝牙打印价签:【商品条码、品名、零售价、规格信息等】(商品名称支持换行显示)
- 蓝牙权限设置细节:bluetooth-central和bluetooth-peripheral
5.2.2 本地化
-
解决部分英文国际化没有生效的问题- APP(iOS版)存储国际化英文字符串的.string文件长度受限,需修改逻辑拆分子文件存储。
-
iOS本地化字符串指定参数顺序(应用场景:app内的多语言切换)
-
【iOS APP 内的国际化切换】1、字符串的本地化、2、自定义解析本地化字符串的工具类LanguageManager、3、例子:登录界面切换中英文。
-
iOS TextViewHyperLink 文字超链接: 《用户协议及隐私政策》弹框(支持本地化,包含demo源码)
VI 、 app上架指南
6.1 上架流程指南
-
iOS上架前的准备、上架技巧(不更新版本的情况下删除App Store非主语言的方法)、常见上架问题及解决方案(上传ipa包被吃掉、已上架app在AppStore搜不到)、app上架后的事项(ASO)
-
iOS代码管理之【Xcode Build版本号自增的解决方案】(通过配置脚本让xcode 在每次Build打包时自动对CFBundleVersion加一)
-
【codesign】1、重签名2、搜索本机的证书、查看签名证书、3、打包脚本
6.2 ASO
see also
- 本博客精品文章汇总(持续更新)
腾讯云+社区专栏:https://cloud.tencent.com/developer/column/90774
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2necijmv018gc
更多iOS技术文章,请关注 “iOS逆向” 公众号,一起学习,一起进步。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!






